Должны ли переменные взаимосвязанных функций быть объявлены как volatile в собственном переполнении стека

Есть ли разница между:

    __declspec(align(8)) long long variable1; //assume shared among threads
InterlockedIncrement64(&variable1);

И это:

    __declspec(align(8)) long long volatile variable2;//assume shared among threads
InterlockedIncrement64(&variable2);

Я думаю, что они работают точно так же в этом сценарии. Я думаю, что единственная разница будет в том, что если variable1 доступ без блокировки функции не гарантируется, что текущее значение variable2гарантированно будет текущим значением. Пример:

long long x = variable1; //Not guaranteed to be the most recent value when accessed
long long y = variable2; //Guaranteed to be the most recent value when accessed

Я прав в своих предположениях?
Примечание: я использую / volatile: MS компилятор в Visual Studio

4

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]