线程池中的线程做完任务后怎么回到线程池中

liumu1209 2011-08-25 03:51:16
现有任务队列 TaskQueen
线程池 ThreadPool,初始化时线程池中的线程都是挂起的
从任务队列中获取一个任务,再线程中获取一个挂起的线程,给线程类装上任务,唤醒线程执行。
线程执行完后是怎么回到线程池中的?

...全文
207 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2011-08-25
  • 打赏
  • 举报
回复
你这是异步调用,可以用系统自带的QueueUserWorkItem
http://blog.sina.com.cn/s/blog_54384df80100a0g1.html
shenyi0106 2011-08-25
  • 打赏
  • 举报
回复
用线程本身的状态很好的管理线程池
通过让线程池中的线程等待在一个入口处,这样就可以控制线程池了
ndy_w 2011-08-25
  • 打赏
  • 举报
回复
同步啊!用临界区就行。
wesleyluo 2011-08-25
  • 打赏
  • 举报
回复
加个锁什么的,一次只能一个访问线程资源。
liumu1209 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ndy_w 的回复:]

wait挂起
[/Quote]

线程类维护一个状态,在执行过程中把任务做完就修改线程状态为空闲,然后挂起自己。但是如果把线程状态修改为空闲的这个时候,恰好池线程调度空闲线程时又把它调出来装上任务执行,不是有问题了么。
liumu1209 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ndy_w 的回复:]

wait挂起
[/Quote]
挂起的时候不需要先修改线程对象的状态吗,要不然怎么知道它是挂起的?
ndy_w 2011-08-25
  • 打赏
  • 举报
回复
wait挂起

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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