C# System.Threading.Mutex 用法.代码展示
时间: 2024-12-26 19:29:44 浏览: 19
`System.Threading.Mutex` 是 C# 中用于进程内多线程同步的一种工具,它提供了一种独占锁,即一次只允许一个线程执行相应代码段。以下是使用 Mutex 的基本步骤和代码示例:
```csharp
using System;
using System.Threading;
class MutexExample
{
private static readonly Mutex mutex = new Mutex(true, "MyUniqueMutexName"); // 创建一个全局唯一的Mutex
static void Main(string[] args)
{
// 同步辅助方法
bool acquired = false;
try
{
// 尝试获取Mutex,如果已存在则阻塞等待
if (!mutex.WaitOne(Timeout.Infinite)) // 或者指定超时时间
{
Console.WriteLine("Another thread is already running.");
}
else
{
acquired = true; // 获取到锁后标记为已获取
Console.WriteLine("Acquired the mutex. Running critical section...");
// 执行你的线程关键部分(这里是空的)
mutex.Release(); // 执行完后释放锁
}
}
finally
{
if (acquired)
{
mutex.Release(); // 无论是否异常,都应该尝试释放锁
}
}
// 主线程继续运行
}
}
```
在这个例子中,`WaitOne` 方法试图获取 mutex,如果当前没有被其他线程持有,则立即返回 true;如果有其他线程持有,那么当前线程会被阻塞直到 mutex 变为可用。`Release` 方法用于释放已经获得的 mutex,以便其他线程可以访问。
注意,`Mutex` 名称应该是唯一的,否则可能导致混乱。另外,为了防止意外创建多个 mutex,建议始终在静态作用域中创建它,并确保名称固定不变。
阅读全文