Jas*_*wal 19 c# multithreading mutex semaphore
C#中的互斥锁和信号量是什么?我们需要实施的地方?
我们如何在多线程中与他们合作?
bob*_*mcr 31
你应该从MSDN开始.
通常,您只在跨进程使用互斥锁,例如,如果您拥有多个应用程序必须共享的资源,或者您希望构建单实例应用程序(即只允许一次运行1个副本).
信号量允许您限制对特定数量的并发线程的访问,因此您可以拥有(例如)一次最多执行特定代码路径的两个线程.
您可能想要查看锁定语句.它可以处理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)
我首先阅读这篇文章:http://www.albahari.com/threading/part2.aspx#_Synchronization_Essentials ,然后通过发布的MSDN链接bbbymcr来支持它.
| 归档时间: |
|
| 查看次数: |
30633 次 |
| 最近记录: |