在c++中,在多线程编程中,为什么要把一些线程给挂起呢?这样做有什么目的呢?

 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
百度网友b9ae3d5
2015-05-15 · TA获得超过232个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:88.7万
展开全部
线程的执行需要提供运算资源,而计算机最直接的运算资源,除了内存,就是CPU了。线程的执行需要占用CPU时间。操作系统为了模拟用户“看起来的并发",其底层其实是使用时间片轮询的策略,也就是,会将CPU时间切割成粒度较小的时间片,然后轮流提交到各个线程去执行,在用户可感知的时间内,每个线程也就都得到了运行的机会。
交给”各个线程“去执行,更确切的说法是,交给”各个等待运行的线程“去执行。而挂起线程,实际上,就是告诉操作系统,这个线程不活跃了,暂时不需要运算了,可以从上述的等待运行线程队列中去去掉,然后放入”挂起线程池“中,以后操作系统CPU调度的时候,就不再轮询到这个线程无谓浪费CPU时间了,可以让其他真正active的线程得到更充分的CPU运行时间。
那如果这个线程挂起后,在以后某一时刻想重新运行起来怎么办?这个时间就需要去唤醒这个线程了,唤醒线程的过程,其实也就是从”挂起线程池“放入”等待运行的线程队列“过程,当CPU时间轮询到这个线程,就又可以愉快的玩耍了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
seraph_sigil
2015-05-11 · TA获得超过4434个赞
知道小有建树答主
回答量:442
采纳率:75%
帮助的人:159万
展开全部
一般来说是降低线程对cpu的占用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式