C#中的互斥锁和信号量是什么?我们需要实施的地方?
我们如何在多线程中使用它们?
答案 0 :(得分:30)
你应该从MSDN开始。
通常,您只在跨进程使用Mutex,例如如果您有多个应用程序必须共享的资源,或者您想要构建单实例应用程序(即只允许一次运行1个副本)。
信号量允许您限制对特定数量的并发线程的访问,因此您可以拥有,例如,一次最多执行两个线程执行特定代码路径。
答案 1 :(得分:6)
您可能想要查看lock语句。它可以处理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
}
}
}
通过调用Monitor.Enter和Monitor.Exit来实现lock语句。它等同于以下代码:
Monitor.Enter(Lock);
try
{
// Only one thread at a time is able to enter this section
}
finally
{
Monitor.Exit(Lock);
}
答案 2 :(得分:6)
我首先阅读:http://www.albahari.com/threading/part2.aspx#_Synchronization_Essentials 然后用发布的MSDN链接bbbymcr来支持它。