2013-09-28 38 views
1

這是場景。我們有很多線程訪問受關鍵部分保護的代碼段,從而確保一次只有一個線程可以訪問該部分。現在的問題是,如果一個線程死在臨界區內會發生什麼?應用程序是否掛起?或者有一些鎖定將被釋放的方式?如果某個線程死於臨界區域內會發生什麼情況?

回答

1

您將不得不定義「死亡」。

你的意思是說,它通過錯誤的內存或其他訪問錯誤?然後整個過程由操作系統拋出。

你的意思是線程被終止了(通過退出或由其他線程終止它)?那麼你遇到了麻煩,因爲包括線程終止在內的所有事情都已正確執行,所以等待臨界區的所有線程都將永久停留。

你是說線程進入無限循環?我不確定Windows如何處理這種情況,但有兩種策略:操作系統會假設「一切似乎運行正常,所以我應該遠離」,否則將會有一個系統範圍的CPU配額, OS終止進程。只有進程(線程在其中)可以導致單個線程終止,所有其他機制將拋出整個進程。

+0

我的意思是第二個選項,它要麼退出或者其他某個線程終止它。 – Ram

相關問題