大佬教程收集整理的这篇文章主要介绍了c – 有关pthread调度程序和优先级的问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Q1:
我在我的c代码中使用sched_setscheduler将线程调度程序设置为scheD_RR.这个过程中的所有线程都会使用这个实时调度程序吗?或者我可以在一个进程中针对不同的线程使用不同的调度程序策略?
Q2:
线程优先级是仅在进程内部还是跨多个进程生效?例如.我有两个使用scheD_RR的进程.一个具有优先级为99的线程,另一个具有优先级为98的线程.前一个线程的优先级高于后者吗?如果线程使用不同的调度程序,如何比较它们的优先级怎么办?
Q3:
@R_255_10675@用什么“默认”号码作为调度程序的优先级?例如.我使用下面的代码:
struct sched_param param; param.sched_priority = default_priority; sched_setscheduler(0,scheD_RR,¶m));
我应该将什么值设置为default_priority?我的程序中有一些高优先级线程,普通优先级线程和一些低优先级线程.在1-99中,@R_255_10675@用多少个优先级?
Q4:
进程优先级和线程优先级混合.例如,我可以使用Nice来设置进程优先级.如果一个进程具有较低的进程优先级,但在我的代码中,我将其线程设置为高优先级.这会覆盖进程优先级设置吗?
Pthread具有争用范围属性.它可能是PTHREAD_SCOPE_SYstem或PTHREAD_SCOPE_PROCESs.它不需要在它们上实现. Linux仅支持PTHREAD_SCOPE_SYstem,这意味着来自所有进程的所有线程都相互竞争.此外,在Linux中,线程本质上是一个轻量级进程.进程调度程序不会在调度中以不同方式处理进程和线程.
解答.
Q1:
同一进程中的线程可以有不同的调度策略和优先级.
Q2:
线程跨进程竞争.
Q3:
我可以使用一些任意数字.每个优先级(从1到99)将在调度中拥有自己的队列.
Q4:
nice值在Linux默认scheD_OTHER策略中使用.当scheD_RR或scheD_FIFO等实时策略用于线程时,nice值无效.由于scheD_RR和scheD_FIFO的最小优先级为1,scheD_OTHER的优先级只能为0.因此,具有实时策略的线程始终具有调度优先级而非非实时优先级.
答案仅适用于Linux.其他操作系统如BSD,Solaris可能有不同的pthread实现.
以上是大佬教程为你收集整理的c – 有关pthread调度程序和优先级的问题全部内容,希望文章能够帮你解决c – 有关pthread调度程序和优先级的问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。