锁,监视器,互斥

时间:2009-11-19 13:20:52

标签: c#

  

可能重复:
  Monitor vs Mutex in c#

您好,

在这个网站上,我发现了不同人的不同答案,令人困惑。仍然完全不清楚在哪种情况下,[Lock,Monitor,Mutex]这三个术语中的每一个对于实时需求都非常有用。 这些术语之间更加混乱。

我需要在高水平深度上有非常明显的差异,并且基本上需要在三个术语中的每个术语中使用更好的示例并且清楚地理解。

请使用C#.NET以非常好的示例提供非常高级别的实时使用或需求的信息。

由于 萨库马尔

2 个答案:

答案 0 :(得分:9)

简化和简短:

Monitor是托管的.NET同步原语(范围只是一个应用程序域)。 C#lock()除了使用Monitortry...finally子句之外什么都不做,以确保在异常的情况下释放锁。

Mutex是一个操作系统同步对象,也可用于跨多个进程进行同步(通过命名的互斥锁)。

答案 1 :(得分:4)

  • '锁'是一个通用术语,可能意味着几件事
  • locks语句,lock(x) { }使用Monitor类
  • Monitor类是一个(相对)轻量级的互斥类。它完全构建在托管代码中,无需与WIN32 API的交互
  • Mutex是一个Win32类。命名互斥锁可以跨应用程序同步,但否则使用Monitor。
  • 您忘记了ResetEvents和Waithandles