<atomic> 注释2:#if 的参数形式,类 _Storage_for<T>,编译抑制 #pragma warning(suppress : 5),内存约束memory_order_relaxed

(4)#if 的参数形式,我们都知道其条件要可以转为 布尔量才可以

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试一下:

在这里插入图片描述

(5) 模板类 _Storage_for,根据源码,其是可以存储一个未被初始化的值:

template <class _Ty>  // uninitialized space to store a _Ty  
struct _Storage_for   // 本模板类用一块未初始化的空间存储 _Ty 类型的数据
{  
    alignas(_Ty) unsigned char _Storage[sizeof(_Ty)];  // 本类的数据成员

    _Storage_for()                    = default;           // 默认的构造函数
    _Storage_for(const _Storage_for&) = delete;            // 禁止 copy 构造函数
    _Storage_for& operator=(const _Storage_for&) = delete; // 禁止 copy 赋值运算符函数

    _Ty& _Ref() {     return reinterpret_cast<_Ty&>(_Storage);   } // 返回对本类数据成员的引用

    _Ty* _Ptr() {     return reinterpret_cast<_Ty*>(&_Storage);  } // 返回本类中数据成员的地址
};

++ 举例测试:

在这里插入图片描述

++ 以及:

在这里插入图片描述

++ 为什么分析这些类,因为后面的 atomic 模板 ,会用到这些基础类。

(6) 预处理指令 #pragma warning(suppress : 5)

在这里插入图片描述
在这里插入图片描述

(7) 内存访问约束 memory_order_relaxed ,用于多线程的内存访问同步:

在这里插入图片描述
在这里插入图片描述

还有其它更严格的内存访问控制,见下篇。

(8)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值