關於void sleep(dword dwmilliseconds);函式,許多人都覺得,它是告訴系統,延遲多少毫秒來執行後面的**。
但是,在windows這樣的非實時多工系統中,我們是無法估算會睡眠多久的。因為乙個執行緒不是總是被執行的。它會在執行一段時間後,被系統暫停,然後系統又去執行另外的執行緒**。於是,sleep函式的解釋如下:
在很長一段時間也沒有選擇到這個執行緒,那這麼執行緒就很繼續休眠。於是說,這個sleep(400);將導致這個執行緒會休眠大於等於400ms的時間。
1、呼叫sleep,可使執行緒自願放棄它剩餘的時間片。
2、系統將在大約的指定秒數內使執行緒不可執行。不錯,如果告訴系統,想睡眠100ms,那麼可以睡大約這麼長的時間,但也也可能睡眠數秒或數分鐘。記住,windows不是個實時作業系統。雖然執行緒可能在規定的時間被喚醒,但是它能否做到,取決於系統中還有什麼操作正在進行。
3、可以呼叫sleep(infinite),告訴系統永遠不要呼叫這個執行緒。但最好不要這樣,讓執行緒退出就行了。反正你都不再需要它。或者呼叫sleep(0);告訴系統執行緒將放棄剩於的時間片,並使系統排程另乙個執行緒。但是,系統可以對剛剛呼叫sleep的執行緒重新排程。如果不存在多個擁有相同優先順序的可排程執行緒。就會出現這種情況。
Sleep函式的使用
sleep 函式函式名 sleep 功 能 執行掛起一段時間 用 法 unsigned sleep unsigned milliseconds 在 vc中使用帶上標頭檔案 include 在 gcc編譯器 中,使用的標頭檔案因 gcc版本的不同而不同 include 注意 在vc中 sleep 中的...
關於Sleep函式
關於 sleep 函式在windows 系統和linux 系統下是兩個不同的函式,差別較大,但功能是相同的,都是將程序掛起一段時間。windows 系統下函式名為 sleep 其函式原型為 include 函式使用標頭檔案 void sleep dword dwmilliseconds 引數為毫秒 ...
關於執行緒的sleep函式
執行緒池的實現基本上是乙個生產者消費者模型,具體就是1個生產者對應多個多個消費者。主線程對應其中的生產者,將到達的客戶請求進行封裝後送到商店供消費者使用 這裡的商店可以用鍊錶或是其它容器來實現 而執行緒池中的多個工作執行緒就是這些商品 客戶請求 的消費者。include include includ...