假设我有一个指向整数的指针。
volatile int* commonPointer = new int();
我有多个线程解引用那个指针。
int blah = *commonPointer;
但是,有一个线程需要更改那个指针的地址:
int* temp = new int();
int* old = commonPointer;
InterlockedExchange(&commonPointer,temp);
delete old;
现在,先不考虑有些线程可能读取“旧”值,而有些线程可能读取“新”值,这在我的情况下不是问题。
是否存在这样一种情况:一个线程开始解引用指针,就在地址被删除时,它会得到一个异常?或者解引用是原子性的,所以不会发生这种情况?