Что гарантирует видимость Chronicle-Queue MT в одном процессе?

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

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

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


person digital_infinity    schedule 23.01.2020    source источник


Ответы (1)


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

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

person Dmitry Pisklov    schedule 13.03.2020