Question:為什麼IO密集型線程優先級需要高于CPU密集型線程?
原文中說到:
優先級高的線程配置設定時間片的數量要多于優先級低的線程。設定線程優先級時:
針對頻繁阻塞(休眠或者I/O操作)的線程需要設定較高優先級,
而偏重計算(需要較多CPU時間或者偏運算)的線程則設定較低的優先級,確定處理器不會被獨占。
這段話應該怎麼了解呢,可參考 IOS 如何高效的使用多線程。
其線上程優先級權衡中提到:通常來說,線程排程除了輪轉法以外,還有優先級排程的方案。
線上程排程時,高優先級的線程大機率會更早的執行。有兩個概念需要明确:
- IO 密集型線程:頻繁等待的線程,等待的時候會讓出時間片。
- CPU 密集型線程:很少等待的線程,意味着長時間占用着 CPU。
在特殊場景下,當多個 CPU 密集型線程霸占了所有 CPU 資源,
- 讓 IO 密集型線程優先級高于 CPU 密集型線程。
- 讓緊急的任務擁有更高的優先級。