测试程序非常简单,每次就是主程序里push_back十个线程,线程执行的函数就是上面的累加函数。我测试过 -O3 编译,单纯从执行时间看,跟不带O编译看不出什么区别
无锁的普通 long long 类型为什么也慢。。
【 在 ziqin 的大作中提到: 】
: 1. 锁不贵,撞锁才贵
: 2. atomic并没有规定必须无锁,事实上大部分atomic<>是有锁的,你可以用is_lock_free看一下atomic<long long>是不是无锁
: 3. 无锁 != 单线程,挂了atomic,甚至只是memory fence,对cache和编译器优化都是有影响的
: ...................
--
修改:confinement FROM 120.229.9.*
FROM 120.229.9.*