11
A
回答
13
例如,在C#.NET鎖語句相當於:
Monitor.Enter(object);
try
{
// Your code here...
}
finally
{
Monitor.Exit(object);
}
但是,請記住,監視器也可以Wait()
和Pulse()
,這往往是在複雜的多線程情況下非常有用。
編輯: 在.NET Framework的更高版本,這已更改爲:
bool lockTaken = false;
try
{
Monitor.Enter(object, ref lockTaken);
// Your code here...
}
finally
{
if (lockTaken)
{
Monitor.Exit(object);
}
}
4
他們有關。例如,在C#中,lock語句在完成時是一個簡單的嘗試終止包裝,圍繞entering a Monitor和exiting one。
1
顯示器是編譯器輔助的 「半自動」 的鎖。它們允許在類上聲明方法等。這只是提供互斥的一種不同方法。我發現this book是對這些概念最全面的解釋,儘管它主要面向OS開發人員。
0
鎖確保相互排斥。
監視器將要保護的數據與保護對數據訪問所需的互斥和同步原語相關聯。
同步用於例如當您需要一個線程來等待事件發生時(例如,等到另一個線程將一個項目放入隊列中)。
0
監視器是一種編程語言構造,與semiphores/locks具有相同的功能,但Monitors通過在運行時進行同步來控制共享數據。相反,鎖通過「旋轉」來保護共享數據,這可能導致CPU利用率較低。
-1
鎖定只關注互相排斥,但 Moniter自動提供互斥。
所以我們不需要擔心在Monitor中使用互斥。 而不是ME,我們只有在編程時才需要保存sycronzing。
Moniter提供更系統的編程方式。因此,它是更先進的。
0
沒有什麼區別,lock在try/finally塊中生成Monitor.Enter和Monitor.Exit。使用監控鎖定允許您進行微調,因爲它具有Pulse和PulseAll。如果您無法使用TryEnter獲取鎖定,也可以進行備選處理。
-1
監控是概念,鎖是實際的實現。
相關問題
- 1. java中的內部鎖和監視器鎖有什麼區別?
- 2. 鎖定和互鎖之間的區別
- 3. 比賽和死鎖之間的區別
- 4. 觸發器和鎖存器之間的區別
- 5. onDoubleTap監聽器和onDoubleTapEvent監聽器之間的區別是什麼
- 6. Android事件監聽器和iOS Target-Action之間的區別?
- 7. TCP監聽器和套接字之間的區別
- 8. 點擊監聽器與jQuery和Javascript之間的區別
- 9. 監視器和鎖問題
- 10. 嵌套鎖和簡單鎖之間的區別
- 11. 鎖定(this)和靜態對象鎖定之間的區別
- 12. 視圖和tableViewControllers之間的UIBarButton區別?
- 13. 互斥鎖與pthread_join之間的區別
- 14. 反應流和事件監聽器之間有什麼區別?
- 15. 子視圖和容器視圖之間的IOS區別
- 16. 鎖,互斥和臨界區之間的區別
- 17. 集合和容器之間的區別
- 18. 之間的〜/和的區別../
- 19. '#','%'和'$'之間的區別
- 20. {!!之間的區別!!}和{{}}
- 21. '+ ='和'= +'之間的區別?
- 22. 「。+」和「。+?」之間的區別
- 23. .eq之間的區別。和==
- 24. #。/和#之間的區別。 ./
- 25. !=和!之間的區別==
- 26. 「%〜dp0」和「。\」之間的區別?
- 27. | =和^ = css之間的區別
- 28. 之間的區別。和#
- 29. ==和case之間的區別?
- 30. 「**/* /」和「** /」之間的區別?
@John Gietzen:真棒...thx爲了很好的解釋。 – IAbstract 2010-02-02 07:32:06