簡體   English   中英

等待互斥量的線程如何重新運行?

[英]How is a thread waiting for mutex put back to running?

上下文是這樣的:

  • 線程試圖鎖定已經鎖定的互斥鎖
  • 線程進入睡眠/阻塞狀態
  • 一段時間后,互斥體被解鎖

Q1)那會發生什么?

線程會立即恢復運行嗎? 還是內核仍然等待正在運行的線程消耗其時間片並正常調度正在等待的線程?

Q2)如果互斥鎖沒有永遠解鎖怎么辦? 內核如何確定讓線程等待?

線程會立即恢復運行嗎? 還是內核仍然等待正在運行的線程消耗其時間片並正常調度正在等待的線程?

通常,該線程現在可以運行了。 在大多數系統上,如果有可用的內核,它將立即開始運行。 如果不是,則下次在任何內核上調用調度程序時,將考慮該問題。

如果互斥鎖沒有永遠解鎖怎么辦? 內核如何確定讓線程等待?

通常,線程在喚醒時要做的第一件事就是嘗試鎖定互斥鎖。 如果失敗,它將再次阻塞。 一些實現將互斥鎖分配給特定線程之前,它們就可以立即運行,在這種情況下,線程會隨着互斥鎖喚醒。

實現方式各不相同,並且可以做任何符合要求的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM