什么是互斥锁和信号量在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); }