线程池问题

myalley 2010-06-04 05:46:22
使用线程池时,线程池中的线程是在我们的进程中运行,还是在其它进程中运行?如果是在我们的进程中运行,那么我们自己创建的所有线程退出时,进程是否会立即退出呢?请大侠帮忙解答,谢谢。
...全文
109 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
myalley 2010-06-05
  • 打赏
  • 举报
回复
非常感谢您的回复!

我想问的是,如果自己创建的线程都退出了,但线程池自动创建的线程还有一些工作项尚未完成,那么我们自己创建的线程都退出了,此时进程是等待所有工作项完成再退出,还是杀死线程池自动创建的线程,然后立即退出呢?
比如,我的程序里只有一个主线程,在这个主线程里,我用CreateThreadPoolWork创建了一个工作项,系统线程池线程执行这个工作项可能需要很长时间,但是我通过SubmitThreadPoolWork提交若干工作项后,还没等这些工作项执行完,主线程就退出了。
如楼上所说,如果此时还有系统线程池线程在当前进程里运行,那么按道理,进程不会立即退出,因为还有线程尚(线程池线程)未结束,如果这样,我觉得又不太好,因为此时要考虑线程池线程何时结束。

会不会当前进程不理会线程池线程,只要自己创建的线程一退出,就会终止线程池线程,然后退出?
budweiser 2010-06-05
  • 打赏
  • 举报
回复
肯定是在本进程中运行啊, 进程本来是有线程构成的(包含主线程), 如果创建的所有线程退出, (包含主线程), 进程就退出了。 因为进程只能以线程为单位在CPU中调度, 没有创建线程时只有主线程在CPU中调度执行。
maaw 2010-06-05
  • 打赏
  • 举报
回复
不会,要等到当前进程中没有线程在运行后(daemon线程除外),进程才会自动退出

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧