Как я могу выполнить следующие операции в одной атомарной операции? Это возможно?
LARGE_INTEGER* ptr; // field
void method()
{
LARGE_INTEGER* local = ptr;
ptr = nullptr;
}
Итак, я хочу сохранить указатель из поля в локальный указатель и сразу же установить для этого поля значение nullptr
.
Другими словами, я хочу переместить указатель из поля в локальную переменную в одной атомарной операции.
LARGE_INTEGER* local = InterlockedExchangePointer(&ptr, nullptr);
Может потребоваться приведение к первому аргументу. - person Igor Tandetnik   schedule 06.08.2017LARGE_INTEGER**
несовместим с параметром типаvolatile PVOID *
- person M.kazem Akhgary   schedule 06.08.2017LARGE_INTEGER* local = (LARGE_INTEGER*)InterlockedExchangePointer((PVOID*)&_ptr, nullptr);
если это так, вы можете опубликовать это как ответ, я очень ценю это, спасибо @IgorTandetnik - person M.kazem Akhgary   schedule 06.08.2017std::atomic
или повторите эквивалент. - person GManNickG   schedule 06.08.2017