原子交换指针与nullptr

时间:2017-08-06 04:29:00

标签: c++ pointers nullptr

如何在单原子操作中执行以下操作?这可能吗?

 LARGE_INTEGER* ptr; // field

 void method()
 {
       LARGE_INTEGER* local = ptr;
       ptr = nullptr;
 }

所以我想将指针从字段存储到本地指针并立即将该字段设置为nullptr

换句话说,我想在单原子操作中将指针从字段移动到局部变量。

1 个答案:

答案 0 :(得分:1)

从C ++ 11开始,您可以像这样使用std::atomic

#include <atomic>
LARGE_INTEGER value;
std::atomic<LARGE_INTEGER*> ptr{&value};
LARGE_INTEGER* local = ptr.exchange(nullptr);