2017-06-12 242 views
3

我期待優先線程,因此如果兩個線程正在等待一個互斥體,具有最高優先級的線程將永遠是優先級較低的人之前採取互斥。C++互斥鎖的線程的優先級

一位同事建議,通過改變我的線程的線程的優先級我應該做到這一點。我嘗試使用SetThreadPriority()函數將其中一個等待線程設置爲0(正常),另一個線程設置爲2(最高),但不會像我期望的那樣影響互斥體行爲。當前鎖總是進入請求所有權的第一個線程。

那麼這種行爲是否正常?與我的同事的想法相反?有沒有不同的方法可以讓線程優先,我可能會失蹤?或者我正在尋找一個更復雜的問題來解決?

+1

我的問題直接指如果線程的優先級(由SetThreadPriority函數定義())對互斥量優先級的影響,你指的是這個問題似乎不這樣做。儘管它們是相似的,但我不認爲它們的答案完全相同。 – lhbortho

+0

嗯..對不起。它肯定回答了這個問題:「我希望優先考慮一個線程,這樣如果兩個線程正在等待互斥鎖,那麼具有最高優先級的線程將始終在較低優先級的線程之前佔用互斥鎖。」 – Drop

+1

是的,我同意,我的下一步肯定是看看你提到的問題。我只是想確認線程優先級本身並不是第一個因素。 – lhbortho

回答

2

線程優先級說,隨着由調度,這將優先調度高優先級的線程確定的線程CPU上多少時間得到 - 它不會影響互斥的行爲,我不知道的任何手段讓它這樣做。