您好,今天天天来为大家解答以上的问题。c++11 线程池相信很多小伙伴还不知道,现在让我们一起来看看吧!
c++11 线程池 c线程池实现原理
1、适用于 Django 等 WEB 应用框架,本身自带多线程,修改全局变量简单,但要注意线程安全。
2、上下文管理协议相当于隐性地省略了 threadPool.shutdown(wait=True) ,同时,程序正常执行完成或出现异常中断的时候,就会调用 __exit__() 方法,接下来进行异常中止的基础。
3、程序运行中,只需 sign = 1 或者 exiting.set() ,worker 函数则跳过主要运算部分,剩余线程任务将迅速完成,变相达到中止多线程任务的目的。
4、提交给线程池的每个线程任务 task 加入 threadPool 中,方便后续对 task 进行作。
5、当 for通常情况,我们利用 Ctrl+C 让程序触发 KeyboardInterrupt 异常,中止程序运行。
6、线程池方案下, Ctrl-C 失效,当线程池里的线程任务跑完后,才会触发 KeyboardInterrupt 。
7、 循环内的 task 全部提交后,线程会再后台运行,而进程运行至 while 中堵塞,直至 threadPool 中一个线程是否 .done() 。
8、若进程堵塞在 while 中接收到 Ctrl+C 的 KeyboardInterrupt 异常,则从后往前取消 threadPool 中所有任务,达到中止目的。
本文到这结束,希望上面文章对大家有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。