atomic 注释26:测试模板类 atomic<T> 的成员函数 is_lock_free ()、load ()、类型转换函数 operator T ()、睡眠等待 wait ()

(72)测试一个该类的成员函数 is_lock_free ()

在这里插入图片描述

++ 测试结果如下,对于 c++ 里规定的基础类型,都是免自旋锁的。因为对于 64 位 intel CPU ,aL aH ax eax rax 完全有对应的汇编指令来原子性完成对寄存器的操作

在这里插入图片描述

(73)关于原子性的读取 atmoic《T》 中数据的测试,查看 load() 函数的返回值的类型是值传递还是左值引用

在这里插入图片描述

++ 疑问的原因在于源代码里 _Ty 的类型

在这里插入图片描述

++ 查看 atomic《T》:: load()调用的其父类源代码,可以解开这个异或:

在这里插入图片描述

(74) 测试其 类型转换函数 operator T ( )

在这里插入图片描述

(75)函数 atomic《T》:: wait (),需要被 对应的 notify()唤醒,但原子量的值等于形参 1 ,还是会继续睡眠的

在这里插入图片描述

++ 其父类的源代码如下

在这里插入图片描述

++ 测试一下:

在这里插入图片描述

(76)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值