繁体   English   中英

使用不同的策略调度不同的线程

[英]Different threads being scheduled with different policies

在用于线程调度的POSIX API中,我们可以具有具有不同调度策略的不同线程。

例:

pthread_attr_setschedpolicy (&attr, SCHED_FIFO); // set policy first in first out
pthread_create(&tid1,&attr,runner,NULL);  // create thread with first in first out
pthread_attr_setschedpolicy (&attr, SCHED_RR);  // set policy round robin
pthread_create(&tid2,&attr,runner,NULL);  // create thread with round robin

我认为所有线程都应遵循通用的调度策略(如果我错了,请更正我),那么以上代码如何工作?

不,线程不需要通用的调度策略。 调度策略以静态优先级级别控制线程如何在可运行线程列表中移动,因此可以在单个线程级别上控制此行为。 选择运行进程的进程时,它将寻找具有可运行线程的最高静态优先级,并为该静态优先级选择列表头的线程。

对于SCHED_FIFO ,一旦线程以指定的优先级到达列表的开头,它将一直停留在该位置,直到阻塞或让步。 对于SCHED_RR ,超出其最大时间范围的可运行线程将被移至列表的末尾以获取其静态优先级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM