diff --git a/mindspore/ccsrc/minddata/dataset/engine/datasetops/source/tf_reader_op.cc b/mindspore/ccsrc/minddata/dataset/engine/datasetops/source/tf_reader_op.cc index 3ac74247523096b4245ea30a80b8607174fa1908..e4b3015ffcd13a787299009eb399d7f9cf659240 100644 --- a/mindspore/ccsrc/minddata/dataset/engine/datasetops/source/tf_reader_op.cc +++ b/mindspore/ccsrc/minddata/dataset/engine/datasetops/source/tf_reader_op.cc @@ -238,6 +238,9 @@ Status TFReaderOp::CalculateNumRowsPerShard() { Status TFReaderOp::operator()() { RETURN_IF_NOT_OK(CalculateNumRowsPerShard()); + // Put here to avoid register failed when Worker_Entry thread exits unexpected + RETURN_IF_NOT_OK(io_block_queue_wait_post_.Register(tree_->AllTasks())); + // launch one thread, responsible for filling mIOBlockQueue RETURN_IF_NOT_OK(tree_->LaunchWorkers(1, std::bind(&TFReaderOp::WaitToFillIOBlockQueue, this))); @@ -250,8 +253,6 @@ Status TFReaderOp::operator()() { // so workers have to be kept alive until the end of the program TaskManager::FindMe()->Post(); - RETURN_IF_NOT_OK(io_block_queue_wait_post_.Register(tree_->AllTasks())); - NotifyToFillIOBlockQueue(); while (!finished_reading_dataset_) { int64_t buffer_id = 0;