Что такое гарантия видимости Chronicle-Queue MT в одном процессе? - PullRequest
0 голосов
/ 23 января 2020

Я имею в виду, когда я пишу java.util.concurrent.LinkedBlockingQueue, у меня есть гарантия видимости, которая случается раньше. Единственный объект, помещенный в очередь, происходит до того, как тот же объект будет извлечен из очереди. Таким образом, я могу предположить в потоке чтения, что любое другое состояние переменной не старше, чем время, в которое объект был помещен в LBQueue.

Есть ли у нас такая же гарантия видимости в Chronicle-Queue ?

Имеем ли мы одинаковую гарантию видимости в любом стиле использования (methodReader / writer против wire().read().object())?

1 Ответ

1 голос
/ 13 марта 2020

Действительно, у вас есть такая же (на самом деле, чуть более сильная) гарантия. Каждая запись в очередь хроники (в любом стиле) приводит к последовательности энергозависимых операций записи / чтения в отображенный в память файл и, следовательно, обеспечивает барьеры памяти.

Кроме того, каждая запись защищена блокировкой записи, которая реализовано как обновление на основе CAS для значения, хранящегося в отображенном в памяти файле.

...