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