偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

調(diào)度算法:Sleep并不總是如你預(yù)想的那樣起作用

開發(fā) 前端
我們需要了解 CPU 時間片在各個線程上的調(diào)度原理,Sleep(0) 和 Sleep(1) 雖然只是參數(shù)上的不同,但底層運行邏輯卻有很大的區(qū)別。

作為上一篇文章”即使運行高優(yōu)先級線程,低優(yōu)先線程也能運行”的另一個反面例子,人們會認(rèn)為調(diào)用 Sleep(0) 是一種放棄 CPU 時間片的簡單方法。舉個例子,如果消費者線程目前沒有數(shù)據(jù)可以處理,則可以調(diào)用此函數(shù)來出讓 CPU 時間片,以等待生產(chǎn)者線程產(chǎn)生需要的數(shù)據(jù)。

讓我們回想一下,調(diào)度程序會查找優(yōu)先級最高的可運行線程,如果存在平局,則所有候選項大致平均共享 CPU。線程可以調(diào)用 Sleep(0) 來放棄其時間片,從而減少其在 CPU 中的份額。但請注意,這并不能保證其他線程將運行。

如果存在具有最高優(yōu)先級的唯一可運行線程,它可以調(diào)用 Sleep(0),并保持很長一段時間,但它不會放棄 CPU。這是因為 Sleep 的時間為零會釋放分配給它的時間片,但使線程可運行。由于它是唯一具有最高優(yōu)先級的可運行線程,因此它會立即恢復(fù) CPU。如果沒有其他人排隊,你實際上并沒有將時間片出讓給其他線程。

因此,如果使用 Sleep(0) 作為不那么有效的出讓 CPU 的方法,它永遠(yuǎn)不會允許運行優(yōu)先級較低的線程。這意味著各種后臺活動(如索引)永遠(yuǎn)不會有機會運行,因為你的程序占用了所有 CPU 時間。更重要的是,你的程序從未真正釋放 CPU 的事實,意味著計算機永遠(yuǎn)不會進入低功耗狀態(tài)。筆記本電腦會更快地耗盡電池電量并運行得更熱,終端服務(wù)器將無休止地消耗 CPU 時間片。

最好的辦法是等待正確的同步對象,以便線程進入睡眠狀態(tài),直到有工作要做。如果你由于某種原因不能這樣做,至少 Sleep 一個非零的時間值。這樣,在短暫的時刻,你的線程不可運行,而其他線程(包括優(yōu)先級較低的線程) 有機會運行。(這也將在一定程度上降低功耗,盡管不如等待正確的同步對象那么多。)

總結(jié)

我們需要了解 CPU 時間片在各個線程上的調(diào)度原理,Sleep(0) 和 Sleep(1) 雖然只是參數(shù)上的不同,但底層運行邏輯卻有很大的區(qū)別。
由于程序可能會運行在各種不同配置的系統(tǒng)上,簡單的使用 Sleep 來進行線程同步,將產(chǎn)生預(yù)料不到的偏差,你絕對不希望這樣。
所以,正如原文作者指出的,多線程下的線程協(xié)調(diào)工作,還是使用內(nèi)核同步對象比較好。

最后

Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,里面有很多關(guān)于Windows的小知識,對于廣大Windows平臺開發(fā)者來說,確實十分有幫助。
本文來自:《Consequences of the scheduling algorithm: Sleeping doesn’t always help》

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-08-23 19:11:01

Kubernetes系統(tǒng)云原生

2020-06-27 17:33:42

云計算技術(shù)安全

2018-05-08 06:51:02

2025-06-30 00:05:00

2014-07-16 09:53:57

分布式系統(tǒng)

2024-04-24 11:29:40

2021-07-26 09:16:34

智能家居安全物聯(lián)網(wǎng)

2020-09-03 10:11:14

云計算遠(yuǎn)程工作

2021-03-23 14:36:18

物聯(lián)網(wǎng)智能交通IOT

2022-06-07 14:55:23

蘋果M2 芯片MacBook

2020-10-09 15:35:45

機器學(xué)習(xí)深度學(xué)習(xí)算法

2021-02-22 07:58:45

算法進程調(diào)度

2014-06-24 09:35:09

算法算法進化

2018-11-20 13:52:54

2017-09-26 11:06:15

數(shù)據(jù)庫索引查詢

2019-05-07 14:03:53

鼠標(biāo)中鍵Windows 10Windows

2021-03-26 06:00:37

編程語言CPU

2020-05-26 15:53:01

StraceDocker容器

2021-03-25 16:01:11

編程語言CPU機器語言

2023-11-22 13:18:02

Linux調(diào)度
點贊
收藏

51CTO技術(shù)棧公眾號