gpt4 book ai didi

java - 为什么不建议从 finally 子句中调用二进制信号量的 release() 方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:54:34 25 4
gpt4 key购买 nike

要确保 Lock 被解锁,建议从 finally 子句中调用 unlock() 方法:

lock.lock();
try{
// critical section which may throw exceptions
} finally {
lock.unlock();
}

这是为了避免可能出现的死锁,以防临界区的代码抛出异常。

为什么不建议在等效场景中对二进制信号量采用相同的做法?

mutex.acquire();
try{
// critical section which may throw exceptions
} finally {
mutex.release();
}

最佳答案

我会说这通常是处理它们的最佳方式。然而,信号量具有由单独线程释放的能力,因此在某些高级用例中,这种模式是不可能的。 (也就是说,Lock lock()unlock() 调用可能在不同的方法中,这样 finally block 也是不可能的)。

关于java - 为什么不建议从 finally 子句中调用二进制信号量的 release() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117048/

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