我的问题很简单。
为什么多线程中的互锁插入比1线程慢?
仅仅是因为缓存线弹跳(缓存线争论)?
还是另一个原因?
我正在使用Intel I7,Visual Studio 2012。我使用互锁increment函数测试了计数数。测试结果是。
1线程-610385971
2线程-497804468
3线程-351516659
4线程-333275249
如果我正确理解您的口头描述中的代码,那么,是,性能退化的主要原因是竞争不同内核之间相同的缓存线。即,要成功执行互锁的增量,核心必须使用https://en.wikipedia.org/wiki/mesif_protocol之类的核心线将e置为e,这是需要互式协调的,并且与互锁增量的执行相比,可见的速度很慢。在单核上。