graph TD;
A["主函数main()"] --> B["创建线程池create_threadpool()"]
B --循环创建指定数目线程--> C(("特定数目的线程"))
B --> ADD(("循环提交任务"))
ADD --任务队列满了--> 阻塞等待
ADD --任务队列没满--> 进行任务添加 --"发送信号(有任务了)"-->Z --> G
C --> D(("线程工作thrRun()"))
D --> E["从队列中获取任务"]
E --> F{"有任务可执行或要销毁线程池吗?"}
F -- 有任务需要处理 --> G["执行任务taskRun()"]
F -- 要销毁线程池 --> SH["销毁线程池"]
F -- 无 --> Z["阻塞等待"]
G --> H{"任务执行完毕了吗?"}
H -- 没有 --> I["休眠1秒"]
I --> H
H -- 是 --> J["任务执行完成"]
J --"通知任务队列任务--"--> E
B --> K{"需要关闭线程池吗?"}
K -- 需要 --> M["销毁线程池destroy_threadpool()"] --发送信号通知线程池关闭--> F
M --> N["等待线程退出Wait for threads to exit"]
N --> O["退出Exit"]
最后修改:2024 年 05 月 02 日
© 允许规范转载