linux C下多线程占用资源太高怎么办

static163 2010-06-28 09:13:48
一个主程序中启动了四五个线程分别做不同的事,而当这几个线程中都在空循环发现占用的CPU还是太高,99%,这个问题怎么解决,比如调用个什么东西就能让它在空闲的时候尽量不占资源?
...全文
197 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huatian008 2010-06-29
  • 打赏
  • 举报
回复
在循环任务里面如果某些条件不成立那么就进入等待状态,并将自己添加到等待队列,当条件在其他任务里面设置以后再唤醒在等待此条件的某一个任务
yanran_hill 2010-06-28
  • 打赏
  • 举报
回复
尽量使用消息驱动,不要pool轮循,如果事件能够用异步方法方法完成,就不要使用同步方式
do_fork 2010-06-28
  • 打赏
  • 举报
回复
用空循环做长时间等待是极其sb的事情,同步的手段有那么多种,随便选一个都比这个强
static163 2010-06-28
  • 打赏
  • 举报
回复
嗯,各位说的是,我也觉得应该弄个什么办法,不过感觉SLEEP不太好,好多东西需要及时处理。
我再学习一下别的方法
select,poll
sigsuspend
yzx714 2010-06-28
  • 打赏
  • 举报
回复
sigsuspend
自己man一下吧
wdy0725 2010-06-28
  • 打赏
  • 举报
回复
空循环? 你是不停的while 或者for吗?这个当然很占资源的。如果想空闲时不占资源,最好用中断的形式,如select,poll.
DontKissBossAss 2010-06-28
  • 打赏
  • 举报
回复
sleep

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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