当前位置: 技术问答>linux和unix
linux下多线程开发遇到的调度问题!!!急~~~~~在线等!
来源: 互联网 发布时间:2015-11-16
本文导语: 在程序中开了8个线程,每个线程处理函数都是一个循环处理过程.如果线程处理函数执行一次循环我就打印出来,正在调度那个线程工作.结果发现,有些线程除了刚开始创建线程的时候执行了一次之外,以后再也没有被调...
在程序中开了8个线程,每个线程处理函数都是一个循环处理过程.如果线程处理函数执行一次循环我就打印出来,正在调度那个线程工作.结果发现,有些线程除了刚开始创建线程的时候执行了一次之外,以后再也没有被调度过,而且最后创建的线程执行的次数最多!不知是什么原因?我的原意是这8个线程同等对待,共同分享处理器时间的.怎么才能实现这样的调度方式?非常感谢
|
atg.cublog.cn
|
很正常。如果所有线程都在sleep状态,调度那个都一样。
|
可能是你的那些线程函数中在等待什么资源而阻塞了!!!!!
你可以在每个线程函数的循环体中加入sleep(1),这样它就会主动让CPU给其它线程使用,但是要做到绝对合理,需要你去估计N种情况,比如你的线程中是否有读取外设数据,你的线程中的执行代码的多少,每个线程的优先级等,不过你要充分相信操作系统,它对线程的调度是合理的,不合理的可能就是你的程序设计
你可以在每个线程函数的循环体中加入sleep(1),这样它就会主动让CPU给其它线程使用,但是要做到绝对合理,需要你去估计N种情况,比如你的线程中是否有读取外设数据,你的线程中的执行代码的多少,每个线程的优先级等,不过你要充分相信操作系统,它对线程的调度是合理的,不合理的可能就是你的程序设计
|
把代码贴出来看下