水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
1/1
|
转到
主题:有锁比无锁乱序快?
2楼
|
stub
|
2021-06-20 18:41:43
|
展开
atomic也是顺序执行了100万次,加锁也是顺序执行了100万次,atomic的每次都要读缓存写缓存,由于竞争激烈,还要使别的核的缓存无效,别的核得到写的权限后还要从别的核更新自己的缓存,肯定是最慢的。
--
修改:stub FROM 112.64.60.*
FROM 112.64.60.*
9楼
|
stub
|
2021-06-20 21:45:11
|
展开
【 在 confinement 的大作中提到: 】
: 测试程序非常简单,每次就是主程序里push_back十个线程,线程执行的函数就是上面的累加函数。我测试过 -O3 编译,单纯从执行时间看,跟不带O编译看不出什么区别
: 无锁的普通 long long 类型为什么也慢。。
:
无锁慢的原因大概率是高速缓存一致性,由于是全局变量,并且10个线程同时更新,会涉及很多次高速缓存失效,更新缓存的情况。你可以把全局换成局部变量,必然是无锁更快。
--
FROM 112.64.60.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版