0
只有在條件uniqueInstance == null
設置爲true時,線程纔會輸入同步代碼,那麼需要在臨界區域內再次檢查它?單例模式 - 爲什麼我們需要檢查兩次可變變量的初始化?
只有在條件uniqueInstance == null
設置爲true時,線程纔會輸入同步代碼,那麼需要在臨界區域內再次檢查它?單例模式 - 爲什麼我們需要檢查兩次可變變量的初始化?
因爲在檢查之間的同步,叫你可能已經通過其收購的信號,寫信給單,並退出其他進程中斷。除非再次檢查,否則可能會覆蓋另一個進程已經初始化的值。另一方面,如果您使整個方法同步,您將支付每次通話的同步成本,而不是僅支持第一次通話。最好兩次檢查。
啊,現在我明白了 - 你的意思是說互斥只適用於「線程」,但其他一些「進程」可以破壞它們之間的事情? –
,在這種情況下,我們不能使用信號量和互斥量 - 兩者 - 在那裏? –
具有更高優先級的線程可以隨時喚醒。這和過程沒有區別。在你做之前,兩者都可以打斷你並設置單身人士。 –