为什么随着螺纹互锁的增加而增加



我的问题很简单。

为什么多线程中的互锁插入比1线程慢?

仅仅是因为缓存线弹跳(缓存线争论)?

还是另一个原因?

我正在使用Intel I7,Visual Studio 2012。我使用互锁increment函数测试了计数数。测试结果是。

1线程-610385971

2线程-497804468

3线程-351516659

4线程-333275249

如果我正确理解您的口头描述中的代码,那么,是,性能退化的主要原因是竞争不同内核之间相同的缓存线。即,要成功执行互锁的增量,核心必须使用https://en.wikipedia.org/wiki/mesif_protocol之类的核心线将e置为e,这是需要互式协调的,并且与互锁增量的执行相比,可见的速度很慢。在单核上。

相关内容

  • 没有找到相关文章

最新更新