【问题标题】:Monitor vs Mutex in c# [duplicate]c#中的监视器与互斥锁[重复]
【发布时间】:2010-11-12 22:30:02
【问题描述】:

可能重复:
What are the differences between various threading synchronization options in C#?

C# 中的 Monitor 和 Mutex 有什么区别?

在 C# 中何时使用 Monitor 以及何时使用 Mutex?

【问题讨论】:

  • 我同意默认使用锁定,但如果 1) 需要超时或 2) 如果锁定范围因某种原因不限于单一方法,则需要调用 Monitor.Enter/Exit .
  • 作为补充说明,监视器通过其等待/脉冲方法提供通常称为“条件变量”的内容。它允许一个线程等待某些东西,直到另一个线程在监视器上调用 Pulse。

标签: c# multithreading synchronization


【解决方案1】:

Joseph Albahari 的“C# 中的线程”是关于这些内容的一个很好的建议来源。所有内容均可在线获取。在我看来,the whole book 值得一读,但你可以检查这些部分:

虽然没有涵盖.NET 4.0 new parallel constructs,但这是一个很好的起点。

更新:该书已更新。现在,它在其part 5 中介绍了 .NET 4.0 并行编程。

【讨论】:

    【解决方案2】:

    Monitor 是托管的,并且更轻量级 - 但仅限于您的 AppDomainMutex 可以命名,并且可以跨进程(允许应用程序之间的一些简单 IPC 场景),并且可以在需要等待句柄的代码中使用。

    对于大多数简单的场景,Monitor(通过lock)就可以了。

    【讨论】:

      【解决方案3】:

      Mutex 可以跨进程共享,并且比 Monitor 要重得多。

      除非您需要跨进程边界进行同步,否则请使用监视器。

      【讨论】:

        猜你喜欢
        • 2011-12-01
        • 2016-11-04
        • 1970-01-01
        • 2010-09-16
        • 2022-07-31
        • 2012-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多