gpt4 book ai didi

java - "non-block-structured locking"是什么意思?

转载 作者:行者123 更新时间:2023-12-01 19:31:36 25 4
gpt4 key购买 nike

我正在阅读实践中的Java并发。在 13.1 Lock 和 ReentrantLock 中,它说:

Why create a new locking mechanism that is so similar to intrinsic locking? Intrinsic locking works fine in most situations but has some functional limitations— it is not possible to interrupt a thread waiting to acquire a lock, or to attempt to acquire a lock without being willing to wait for it forever. Intrinsic locks also must be released in the same block of code in which they are acquired; this simplifies coding and interacts nicely with exception handling, but makes non-block-structured locking disciplines impossible.

“非 block 结构锁定”是什么意思?我认为这意味着你可以在一种方法中锁定,在另一种方法中解锁,例如Lock,但是内部锁必须在获取它们的同一代码块中释放。我说得对吗?

但是该书的中文版将“block”翻译为“阻塞”。是错误吗?

最佳答案

block 结构锁定意味着获取和释放锁的模式反射(reflect)了词法代码结构。具体来说,获取锁的代码段也负责释放锁;例如

Lock lock = ...
lock.acquire();
try {
// do stuff
} finally {
lock.release();
}

替代方案(“非 block 结构锁定”)仅意味着上述约束不适用。您可以执行一些操作,例如在一种方法中获取锁并在不同的方法中释放它。或者(假设)甚至将锁传递给另一个线程来释放1。问题是,与上面的示例相比,这种代码更难正确,也更难分析。

1 - 当心。如果在线程之间传递获取的锁,则可能会遇到内存异常或更糟的情况。事实上,我什至不确定它在 Java 中是否合法。

<小时/>

引用文本中提到的“ block 结构”显然是在谈论代码的词法结构,根据维基百科关于主题 Block (programming) 的文章。如果Java并发实践中文版使用了Blocking (programming)意义上的“阻塞”字符,这是一个误译。

关于java - "non-block-structured locking"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59677725/

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