* 线程执行函数 * @return */
| 64 | * @return |
| 65 | */ |
| 66 | CStatus run() override { |
| 67 | CGRAPH_FUNCTION_BEGIN |
| 68 | CGRAPH_ASSERT_INIT(true) |
| 69 | CGRAPH_ASSERT_NOT_NULL(pool_threads_) |
| 70 | CGRAPH_ASSERT_NOT_NULL(config_) |
| 71 | |
| 72 | /** |
| 73 | * 线程池中任何一个primary线程为null都不可以执行 |
| 74 | * 防止线程初始化失败的情况,导致的崩溃 |
| 75 | * 理论不会走到这个判断逻辑里面 |
| 76 | */ |
| 77 | if (std::any_of(pool_threads_->begin(), pool_threads_->end(), |
| 78 | [](UThreadPrimary* thd) { |
| 79 | return nullptr == thd; |
| 80 | })) { |
| 81 | CGRAPH_RETURN_ERROR_STATUS("primary thread is null") |
| 82 | } |
| 83 | |
| 84 | if (config_->calcBatchTaskRatio()) { |
| 85 | while (done_) { |
| 86 | processTasks(); // 批量任务获取执行接口 |
| 87 | } |
| 88 | } else { |
| 89 | while (done_) { |
| 90 | processTask(); // 单个任务获取执行接口 |
| 91 | } |
| 92 | } |
| 93 | |
| 94 | CGRAPH_FUNCTION_END |
| 95 | } |
| 96 | |
| 97 | |
| 98 | /** |
nothing calls this directly
no test coverage detected