比较好的博客文章:html
https://www.cnblogs.com/wyt007/p/9486752.html安全
知识点:异步
在解释死锁如何发生以及如何阻止死锁的过程当中,你彷佛遇到了问题。this
当两个( 最小二) 线程试图获取已经被另外一个锁锁定的资源的锁时,就会发生死锁。 线程 1锁定资源 1尝试获取对资源 2的锁定。 同时,线程 2对资源 2有一个锁,它尝试获取对资源 1的锁。 两个线程永远不会放弃锁,所以发生死锁。spa
避免死锁的最简单方法是使用超时值。 Monitor类( system.threading.monitor ) 能够在获取锁期间设置超时。线程
例子code
1
2
3
4
5
6
7
8
9
10
11
|
if
(Monitor.TryEnter(
this
, 500))
{
//critical section
}
catch
(Exception ex)
{
}
finally
{
Monitor.Exit();
}
|
下表列出了 Thread 类的一些经常使用的 属性:htm
属性 | 描述 |
---|---|
CurrentContext | 获取线程正在其中执行的当前上下文。 |
CurrentCulture | 获取或设置当前线程的区域性。 |
CurrentPrinciple | 获取或设置线程的当前负责人(对基于角色的安全性而言)。 |
CurrentThread | 获取当前正在运行的线程。 |
CurrentUICulture | 获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源。 |
ExecutionContext | 获取一个 ExecutionContext 对象,该对象包含有关当前线程的各类上下文的信息。 |
IsAlive | 获取一个值,该值指示当前线程的执行状态。 |
IsBackground | 获取或设置一个值,该值指示某个线程是否为后台线程。 |
IsThreadPoolThread | 获取一个值,该值指示线程是否属于托管线程池。 |
ManagedThreadId | 获取当前托管线程的惟一标识符。 |
Name | 获取或设置线程的名称。 |
Priority | 获取或设置一个值,该值指示线程的调度优先级。 |
ThreadState | 获取一个值,该值包含当前线程的状态。 |
下表列出了 Thread 类的一些经常使用的 方法:对象