У меня есть вопрос об использовании очередей без блокировки.
Предположим, у меня есть очередь с одним потребителем для одного производителя, где производитель и потребитель связаны с отдельными ядрами.Элементы очереди - это буферы разделяемой памяти, которые вначале отображаются как производителем, так и потребителем.
Производитель получает элемент очереди, заполняет буфер данными и ставит их в очередь, а потребитель удаляет элемент из очереди,читает его и обрабатывает его некоторым образом.
Должен ли я, как пользователь очереди без блокировки, явно гарантировать, что буфер, написанный производителем, будет видим для пользователя?Или же примитив CAS (или другой подобный) в основе алгоритма автоматически обеспечивает барьер?
В парах примеров, которые я видел, используются целые числа в качестве полезной нагрузки, поэтому этот вопрос о синхронизации памяти не возникает.
Спасибо,