【发布时间】:2010-12-05 21:32:49
【问题描述】:
什么是 C# 中的互斥量和信号量?我们需要在哪里实现?
我们如何在多线程中使用它们?
【问题讨论】:
-
这个话题太大了,恕我直言,您有什么具体问题吗?
-
Naveen 请给我一些分解的问题,以便我可以深入研究它。
标签: c# multithreading mutex semaphore
什么是 C# 中的互斥量和信号量?我们需要在哪里实现?
我们如何在多线程中使用它们?
【问题讨论】:
标签: c# multithreading mutex semaphore
你应该从 MSDN 开始。
通常您只在进程间使用互斥锁,例如如果您有多个应用程序必须共享的资源,或者如果您想构建一个单实例应用程序(即一次只允许运行 1 个副本)。
信号量允许您限制对特定数量的并发线程的访问,例如,您最多可以有两个线程同时执行特定的代码路径。
【讨论】:
我将从阅读以下内容开始:http://www.albahari.com/threading/part2.aspx#_Synchronization_Essentials 然后通过发布的 MSDN 链接 bobbymcr 来支持它。
【讨论】:
您可能想查看 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
}
}
}
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);
}
【讨论】: