当前位置: 技术问答>linux和unix
linux多线程编程的问题
来源: 互联网 发布时间:2015-10-07
本文导语: 在多线程中,有一个线程要实现这样的功能:它的优先级最低,即当其他线程都阻塞时它才运行,但要是在一定时间内,该线程没有执行过,则必须唤醒该线程运行,如何实现?谢谢!!! | ...
在多线程中,有一个线程要实现这样的功能:它的优先级最低,即当其他线程都阻塞时它才运行,但要是在一定时间内,该线程没有执行过,则必须唤醒该线程运行,如何实现?谢谢!!!
|
linux的线程调度策略有SCHED_OTHER(正常、非实时)SCHED_RR(实时、轮转)SCHED_FIFO(实时、先入先出),看来这些不能满足你的要求,所以目前只能由你自己控制(期待好的解决方法)。可以考虑使用类似pthread_cond_wait之类的线程间通信机制,要注意
1.如何检测“其他线程都阻塞”的状态
2.“一定时间内”唤醒时,其它线程是否需要阻塞
3.如果“优先级最低”的线程运行时,需要阻塞其它线程,如何保证
1.如何检测“其他线程都阻塞”的状态
2.“一定时间内”唤醒时,其它线程是否需要阻塞
3.如果“优先级最低”的线程运行时,需要阻塞其它线程,如何保证
|
其它都阻塞,一种就是自己挂起线程,一种就是空转,由挂起的线程或空转线程自己标定状态,你说的那个空闲才执行的线程,可以让他间隙式睡眠,这样有一个短暂时间可以用来检测并恢复运行,由别人唤醒也可以,也就是让它处于假挂起状态,但不会耗费太多CPU。