MCPcopy Create free account
hub / github.com/ChunelFeng/CThreadPool / run

Function run

src/UtilsCtrl/ThreadPool/Thread/UThreadPrimary.h:66–95  ·  view source on GitHub ↗

* 线程执行函数 * @return */

Source from the content-addressed store, hash-verified

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 /**

Callers

nothing calls this directly

Calls 2

processTasksFunction · 0.70
processTaskFunction · 0.70

Tested by

no test coverage detected