Позволяет сказать, что у меня есть указатель на целое число.
volatile int* commonPointer = new int();
И у меня есть несколько потоков, которые разыгрывают этот указатель.
int blah = *commonPointer;
Но один поток должен изменить этот адрес указателя:
int* temp = new int();
int* old = commonPointer;
InterlockedExchange(&commonPointer,temp);
delete old;
Теперь давайте проигнорируем тот факт, что некоторые потоки могут читать "старое" значение, а некоторые могут читать "новое" значение, это не проблема в моем случае.
Может ли быть сценарий, когда один поток начинает разыменовывать указатель, точно так же, как адрес удаляется, а затем получает исключение?
Или это разыгрывающий атом достаточно, чтобы этого не произошло?