C# Thread

比较好的博客文章:

https://www.cnblogs.com/wyt007/p/9486752.html

在解释死锁如何发生以及如何阻止死锁的过程中,你似乎遇到了问题。

当两个( 最小二) 线程试图获取已经被另一个锁锁定的资源的锁时,就会发生死锁。 线程 1锁定资源 1尝试获取对资源 2的锁定。 同时,线程 2对资源 2有一个锁,它尝试获取对资源 1的锁。 两个线程永远不会放弃锁,因此发生死锁。

避免死锁的最简单方法是使用超时值。 Monitor类( system.threading.monitor ) 可以在获取锁期间设置超时。

例子

1
2
3
4
5
6
7
8
9
10
11
if (Monitor.TryEnter( this , 500))
{
//critical section
}
catch (Exception ex)
{
}
finally
{
  Monitor.Exit();
}

猜你喜欢

转载自www.cnblogs.com/mrray/p/10774513.html
今日推荐