Снова что-то о блокировке ...Использование QAtomicInt в качестве забора памяти
Предположим, что я реализую простой массив, основанный на круговом FIFO целых чисел. К FIFO обращаются 2-х ниточный производитель, один потребитель. Индексы чтения и записи всегда обновляются ПОСЛЕ доступа к элементу. На одном CPU это было бы безопасно (предполагая, что операция обновления индексов является атомарной), поскольку только один поток имеет доступ на запись к индексу. На машине SMP это может вызвать проблемы из-за того, что оба процессора могут видеть другое представление индекса из-за его кэша и переупорядочения.
QT имеет перекрестные платформенные атомные переменные, которые также реализуют забор памяти, будет ли использование QAtomicInt безопасным слиянием FIFO или я что-то упускаю?