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

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

我们如何在multithreading中与他们合作?

你应该从MSDN开始。

  • System.Threading.Mutex :同步原语,也可用于进程间同步。
  • System.Threading.Semaphore :限制可以同时访问资源或资源池的线程数。

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

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

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

您可能想要查看锁定语句。 它可以处理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 } } } 

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); }