Атомарное сравнение и подкачка для расположения в сегменте общей памяти


Я хотел бы понять, есть ли какие-либо скрытые проблемы с использованием InterlockedCompareExchange() для изменения памяти в сегменте, созданном с помощью CreateFileMapping(INVALID_HANDLE_VALUE) и совместно используемом несколькими процессами.

Другими словами, могут ли процессы полагаться на семантику CAS для работы с общим блоком памяти? Я предполагаю, что они могут, просто хотят это подтвердить.

Спасибо

1 2

1 ответ:

Операции CAS будут отлично работать с этой памятью. API сопоставления файлов и система виртуальной памяти выполняют всю тяжелую работу по объединению памяти в несколько процессов. К тому времени, когда вы доберетесь до памяти, вы не сможете отличить ее от любого другого фрагмента памяти.