在给定时隙期间,线程是否执行了最小数量的指令?

时间:2017-08-11 05:20:55

标签: c++ c multithreading execution execution-time

在任何给定时隙期间,是否有保证由线程执行的最小指令数。 Execution Model的维基百科页面说"加法操作是许多语言中不可分割的工作单元"

我想了解更多关于与C / C ++一起使用的POSIX Thread的执行模型以及保证在单个时隙中执行的最小数量的不可分割指令或语句。有人可以给出一个指针,我可以在这里了解更多。谢谢你提前

1 个答案:

答案 0 :(得分:1)

在POSIX线程中,有两个主要的调度策略(FIFO和Round Robin)。 Round Robin是默认的调度程序,因为它更公平。

当使用RR调度程序时,每个线程都有一段时间(AKA量子)要运行,所以不能保证X指令会被执行 - 除非我们知道每条指令花了多少时间。

您可以在此处找到有关在PThreads上安排算法的更多信息:http://maxim.int.ru/bookshelf/PthreadsProgram/htm/r_37.html

只是想知道Linux如何定义圆形量子:

/*
 * default timeslice is 100 msecs (used only for SCHED_RR tasks).
 * Timeslices get refilled after they expire.
 */
#define RR_TIMESLICE        (100 * HZ / 1000)

#endif /* _LINUX_SCHED_RT_H */