C#中多线程如何阻塞独占资源返回
时间: 2023-12-14 11:40:03 浏览: 146
在C#中,可以使用Monitor类或lock关键字来实现多线程阻塞独占资源。
使用Monitor类:
```csharp
object resource = new object();
// 线程1
lock (resource)
{
// 访问共享资源
}
// 线程2
lock (resource)
{
// 访问共享资源
}
```
在上面的示例中,线程1先获取了锁,线程2在等待线程1释放锁之前无法访问共享资源。
使用lock关键字:
```csharp
object resource = new object();
// 线程1
Monitor.Enter(resource);
try
{
// 访问共享资源
}
finally
{
Monitor.Exit(resource);
}
// 线程2
Monitor.Enter(resource);
try
{
// 访问共享资源
}
finally
{
Monitor.Exit(resource);
}
```
在上面的示例中,使用try/finally语句确保在访问完共享资源后,锁能够被释放。如果线程1获取了锁,线程2将在等待线程1释放锁之前阻塞。
这些方法都可以阻塞独占资源,并在共享资源被释放后返回。
阅读全文