gpt4 book ai didi

c# - 设置锁时线程关闭时锁会发生什么

转载 作者:行者123 更新时间:2023-11-30 13:15:49 25 4
gpt4 key购买 nike

我想知道,如果在一个线程中我有一个锁定语句,并且如果在设置锁时关闭了该特定线程,那么锁会发生什么?

其他线程是否可以访问关键区域(我的特定锁变量是否已解锁)或锁是否保持事件状态并使我的应用变砖?如果是这样,我必须采取什么解决方案来避免变砖?

最佳答案

A lock声明:

lock (x)
{
...
}

由编译器在生成的 IL 中解释为:

Monitor.Enter(x);
try
{
...
}
finally
{
Monitor.Exit(x);
}

所以你可以看到如果抛出异常,锁会因为 finally 语句而被释放。因此,即使您使用 Thread.Abort 终止线程(这会导致 ThreadAbortException 被抛入线程内)你应该绝对不要这样做,锁将被释放。

关于c# - 设置锁时线程关闭时锁会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4239804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com