回覆列表
  • 1 # srpyz42679

    那要看作業系統context switch的機制。一般windows linux ios都會給定每個執行緒指定的執行時間,如果時間到了會出現計時器中斷訊號(timer interrupt signal),而執行緒會被動丟失CPU的使用權。而有些簡單的嵌入式系統沒有這個機制,context switch一般是要求執行緒主動放棄CPU使用權而交給kernel。如果這時候當前執行緒被阻塞那就會導致死迴圈,這時候要主動的叫reschedule 或者 yield等函式給kernel發訊號。當然有timer的系統也可以叫這些函式要當前執行緒提早主動放棄CPU資源從而避免在迴圈裡等待浪費時間。

  • 2 # 米哈關愛

    不確定你說的阻塞是什麼含義,如果是WAIT、SUSPEND、SLEEP狀態,基本不佔CPU資源,其他如複雜計算、死迴圈情況下佔用極大。

  • 3 # 潘家巨無霸

    執行緒結束等待或者阻塞狀態,會進入執行狀態,當前正在執行的執行緒被阻塞之後,其他執行緒就可以後的執行的機會。被阻塞的執行緒會在合適的時候重新進入就緒狀態,注意是就緒狀態,而不是執行狀態。也就是說,被阻塞執行緒的阻塞解除之後,必須重新等待執行緒排程再次排程它。

  • 中秋節和大豐收的關聯?
  • 大學生一次因為心情煩悶對待他人時動作粗魯,對方區別對待我,這正常嗎?