什么是互斥锁和信号量在c#中?我们需要实施的地方?

Jas*_*wal 19 c# multithreading mutex semaphore

C#中的互斥锁和信号量是什么?我们需要实施的地方?

我们如何在多线程中与他们合作?

bob*_*mcr 31

你应该从MSDN开始.

通常,您只在跨进程使用互斥锁,例如,如果您拥有多个应用程序必须共享的资源,或者您希望构建单实例应用程序(即只允许一次运行1个副本).

信号量允许您限制对特定数量的并发线程的访问,因此您可以拥有(例如)一次最多执行特定代码路径的两个线程.

  • MSDN为+1.它是Windows API空间中所有内容的RTFM-goto. (5认同)

Pet*_*ete 6

您可能想要查看锁定语句.它可以处理C#中的绝大多数线程同步任务

class Test {
    private static object Lock = new object();

    public function Synchronized()
    {
        lock(Lock)
        {
            // Only one thread at a time is able to enter this section
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

lock语句通过调用Monitor.Enter和Monitor.Exit来实现.它等同于以下代码:

Monitor.Enter(Lock);    
try
{
    // Only one thread at a time is able to enter this section
}
finally
{
    Monitor.Exit(Lock);
}
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,可能有用,但不是真正回答提出的问题.考虑一个-1,但留在这个评论.;-) (2认同)

Ed *_*wer 6

我首先阅读这篇文章:http://www.albahari.com/threading/part2.aspx#_Synchronization_Essentials ,然后通过发布的MSDN链接bbbymcr来支持它.