什么是 Chronicle-Queue 单进程 MT 可见性保证?
What is Chronicle-Queue MT visibility guarantee in a single process?
我的意思是当我写信给 java.util.concurrent.LinkedBlockingQueue
时,我有一个可见性保证 happens-before。将单个对象放入队列发生在从队列中拉出同一对象之前。
所以我可以在阅读线程中假设,变量的任何其他状态都不会比对象被放入 LBQueue
.
的时间早
我们在 Chronicle-Queue 中是否有相同的可见性保证?
我们在任何使用方式中是否有相同的可见性保证(methodReader
/writer
vs wire().read().object()
)?
确实和你有同样的(其实稍微强一点)保证。每次写入 Chronicle Queue(以任何方式)都会导致内存映射文件的一系列 volatile write/reads,因此提供了内存屏障。
此外,每次写入都由写锁保护,写锁实现为对存储在内存映射文件中的值进行 CAS 驱动更新。
我的意思是当我写信给 java.util.concurrent.LinkedBlockingQueue
时,我有一个可见性保证 happens-before。将单个对象放入队列发生在从队列中拉出同一对象之前。
所以我可以在阅读线程中假设,变量的任何其他状态都不会比对象被放入 LBQueue
.
我们在 Chronicle-Queue 中是否有相同的可见性保证?
我们在任何使用方式中是否有相同的可见性保证(methodReader
/writer
vs wire().read().object()
)?
确实和你有同样的(其实稍微强一点)保证。每次写入 Chronicle Queue(以任何方式)都会导致内存映射文件的一系列 volatile write/reads,因此提供了内存屏障。
此外,每次写入都由写锁保护,写锁实现为对存储在内存映射文件中的值进行 CAS 驱动更新。