gpt4 book ai didi

c# - 如果没有匹配的 Monitor.Exit,Monitor.Enter 会发生什么情况?

转载 作者:太空狗 更新时间:2023-10-29 20:00:44 43 4
gpt4 key购买 nike

如果您想在退出和清理对象时阻止执行某些代码块,是否可以使用锁来阻止执行?

Monitor.TryEnter(cleanupLock, ref acquiredLock);

TryEnter 可用于确保代码不被执行,并且由于它不等待锁定,因此不会出现死锁。

另一个线程会在确定是时候关闭时获取锁。

Monitor.Enter(cleanupLock);

如果清理线程从不调用

Monitor.Exit(cleanupLock);

这会造成问题吗?

最佳答案

是的,不为成功的 Monitor.TryEnterMonitor.Enter 调用 Monitor.Exit 是导致死锁的捷径应用。您可能能够让它在非常有限的场景中工作,但最终代码或场景会改变,这回来咬你。只是不要这样做。

关于c# - 如果没有匹配的 Monitor.Exit,Monitor.Enter 会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2313253/

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