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 日
如果觉得我的文章对你有用,请随意赞赏