基于锁定的功能比无锁定功能运行得更快!为什么?

时间:2015-05-31 19:02:14

标签: c++11 concurrency synchronization mutex cpu-speed

当我练习基于锁的和无锁的并发时,我意识到我的基于锁的函数比没有同步的函数花费的时间更少:

// A simple money transfer function
void transfer(unsigned int from, unsigned int to, unsigned int amount)
{       
    lock_guard<mutex> lock(m); // removing this line makes it run slower!
    accounts[from] -= amount;
    accounts[to] += amount;
}

以下是完整代码的coliru链接。可能是什么原因?

注意:我知道数据争用问题!

更新:我的观察结果仅基于Coliru。因此,我在MacBook Pro(Retina,2012年中)2,6 GHz Intel Core i7 16 GB 1600 MHz DDR3上运行相同的代码,并意识到无锁定运行速度比基于锁定的运行速度快两倍。但基于锁定的那个在Coliru上运行得更快一点。

0 个答案:

没有答案