|
|
1
5
锁没有
到期
. 当线程试图通过
在您的例子中,似乎有一个主线程正在执行。它会锁定两个
你通过了
使用两个单独的对象实例锁定可能导致死锁。假设一个线程执行以下代码:
} 另一个线程在按相反顺序获取锁的位置执行以下代码:
} 如果第一个线程设法首先获得状态,而第二个线程首先锁定客户机,则它们将死锁,两个线程将不再运行。 一般来说,我建议您将共享状态封装到一个单独的类中,并使对它的访问线程安全:
您还可以使用标记方法
[MethodImpl(MethodImpl.Synchronized)]
属性,但它有其缺陷,因为它将用
如果你想更好地了解
|
|
|
2
0
锁当然不会自行“过期”,锁在lock(..)语句的右大括号之前是有效的。 |
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 1 年前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 1 年前 |
|
|
András Takács · Python多线程问题 1 年前 |
|
|
András Takács · Python多线程错误 1 年前 |