2011-06-03 64 views
0

在Linux中,使用POSIX線程,是否可以提示調度程序調度特定線程。其實情況是我有一個流程是另一個流程的複製品。對於確定性執行,跟隨者進程需要按照領導進程的順序獲取鎖。請求調度程序安排特定線程

因此,例如,在領導進程中,互斥量a被第一個線程2,然後3和4鎖定。跟隨者必須以相同的順序執行。所以如果在追隨者中,線程3首先遇到互斥量a,我想要線程3對調度器說,好吧我放棄了我的時間片,請安排線程2。我知道這可以通過修改調度程序來實現,但我不希望這樣,我希望能夠通過用戶空間程序來控制它。

回答

0

在任何系統中,Linux和視窗POSIX與否,如果你要問這種問題的話,只怕你的應用程序是爲暗處:(

即使線程是3至抽穗期例如睡眠(0),直接中斷可能只是將線程3重新安排回來,搶佔線程2,或者操作系統可能會在另一個空閒核心上直接運行線程3,並且可能先到達互斥體。

您必須使您的應用程序正常工作(可能並非最佳),而不依賴於操作系統調度/調度算法。即使您的設計在測試框中工作,您也必須每隔一段時間測試一次您的系統組合o f OS /硬件,以確保它仍能正常工作而不會發生死鎖或不正確執行。

擺弄調度算法,線程優先級等應該只是爲了提高應用程序的性能,而不是嘗試使其正常工作或阻止其鎖定!

Rgds, Martin