【发布时间】:2016-10-26 05:40:45
【问题描述】:
我产生了四个可分离的线程,并且在每个线程中我给予 1 秒睡眠(睡眠是我的应用程序要求),因为操作系统只安排 2 个线程,其他两个线程处于理想状态,但如果我删除睡眠,所有线程都被安排按操作系统,但我的应用程序要求是每个线程在完成任务后都应该进入睡眠模式
我已经尝试过 sleep、nanosleep 并在 pthread 中设置线程属性、优先级和循环调度,但没有成功。
请建议我还能做些什么来解决我的应用程序问题。
【问题讨论】:
-
你到底想做什么?如果您只想让线程等待暂停,直到它们有工作要做,请查看条件变量..
-
您是否让线程在持有互斥锁或类似的东西时进入睡眠状态?休眠不会解锁互斥锁、操纵信号量、信号条件变量等。
-
一个minimal reproducible example 会在这里。
-
@Dmitri,我的所有线程都需要连续发送一些状态,但是一旦一个线程发送状态,它应该等待一秒钟。
-
@JohnBollinger,我没有在我的线程中使用任何互斥体、信号量,因为我没有更新任何全局数据,只是发送一些状态
标签: c multithreading pthreads sleep scheduling