什么是 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 驱动更新。