【发布时间】:2016-08-02 05:07:08
【问题描述】:
我在 SO 和网络上寻找答案,但只找到了其他语言(c++、python)的答案,并且阅读并没有提供足够清晰的答案。
如果一个线程有一个代码块被锁定,并且该线程在锁定块内时由于某种原因死亡(被强制终止),是否仍会强制执行锁定(即,其他线程不会被锁定)能够使用获取那个锁)?
如:
class myClass {
private static object myLock = new Object();
public void foobar()
{
lock(myLock)
{
//code
}
}
}
如果线程 A 死掉而线程 B 尝试调用 foobar,它可以吗?还是会死机?
【问题讨论】:
-
“我已经在 SO 和网络上寻找答案” - 尝试在您最喜欢的搜索引擎中查找“c# lock exception”。
-
已编辑。我不相信这是重复的。我已经删除了异常部分,并且更感兴趣的是如果线程本身在锁中死亡时会发生什么,没有异常。如果线程被杀死,锁会被释放吗?
标签: c# multithreading locking