POSIX XSH 2.8.4 Process Scheduling定義了線程和進程的調度屬性的行爲。指定sched_*
接口會影響進程的調度屬性,而不是線程。這在以下段落中得到了澄清:瞭解POSIX和Linux/glibc sched_ *函數之間的差異
POSIX模型將「進程」視爲系統資源的集合,包括一個或多個可由操作系統在其控制的處理器上調度的線程。儘管一個進程具有自己的一組調度屬性,但它們對各個線程的調度行爲有間接影響(如果有的話),如下所述。
和
對於系統調度爭用範圍線程,進程調度屬性應具有在任一螺紋或專用於該螺紋底層內核調度實體的調度屬性或行爲沒有影響。
我對此的解讀是,其中只有「系統調度爭用範圍」支持系統(Linux的/ glibc的是這樣的系統)上,該sched_*
功能應該絕對沒有可觀察到的效果。
這與Linux/glibc上當前行爲的實際情況相反,其中sched_*
設置特定線程的調度屬性。
除了希望更好地瞭解一般這種情況下,我想我有這些關鍵問題:
是否有這種差異的理由的任何文件?
我的閱讀標準是否正確?特別是,對於我來說,
sched_setparam
和sched_setscheduler
在單線程應用程序中(主線程使用默認的調度策略(不能更改)以及系統爭用範圍)沒有效果,這似乎真的令人驚訝。標準
sched_*
函數的用處是什麼?在我看來,它們對大多數實現沒有任何影響,即使對支持進程競爭範圍的實現影響也很小。有人可以描述他們的使用目的嗎?
如果這不是StackOverflow,那麼火焰戰將會在這裏開始。 – ssice