以原子方式交换指针与 nullptr
Atomically exchange pointer with nullptr
如何在单个原子操作中执行以下操作?这可能吗?
LARGE_INTEGER* ptr; // field
void method()
{
LARGE_INTEGER* local = ptr;
ptr = nullptr;
}
所以我想将字段中的指针存储到本地指针中,并立即将该字段设置为nullptr
.
换句话说,我想在单个原子操作中将指针从字段移动到局部变量中。
从 C++11 开始,您可以将std::atomic
用于此目的,如下所示:
#include <atomic>
LARGE_INTEGER value;
std::atomic<LARGE_INTEGER*> ptr{&value};
LARGE_INTEGER* local = ptr.exchange(nullptr);
相关文章:
- 将指针设置为"nullptr"并不能防止双重删除?
- C++默认情况下,指针类型数组的元素是否保证初始化为 nullptr?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 检查模板中 nullptr 的函数指针,了解任何类型的可调用对象
- CURLOPT_INTERLEAVEFUNCTION回调函数始终接收 nullptr 作为用户数据指针
- boost::spirit指针属性是用nullptr初始化的吗?
- unique_ptr<T>::get() 返回的指针在原始unique_ptr被销毁后不是 nullptr
- 在C++中将指针数组的所有元素设置为 nullptr
- 以原子方式交换指针与 nullptr
- 指向抽象类的指针数组:指向 nullptr 或不指向 nullptr (C++)
- 仅当指针不是 nullptr 时才调用方法
- C++链表指针始终为 nullptr
- 为什么分配了 nullptr 的指针可以调用成员函数?
- 空向量占用的空间是否与指向当前设置为 nullptr 的类型的指针一样多
- 如何使用nullptr初始化同一类对象的静态指针数组?
- 为什么我不能使用 nullptr 初始化自动推导的指针?
- std::unique_ptr 是否在其析构函数中将其基础指针设置为 nullptr?
- 我可以得到指向 nullptr 的指针的指针吗,它是否有效
- C++ 仅设置对象指向 nullptr 的指针
- 指向自定义类型的静态指针在初始化后使用相同类型的静态非空指针保持 nullptr