(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)
谢谢