一、概要
通过代码实测,分析atomic、mutex的性能差别。
二、测试代码
#pragma once
#include <atomic>
#include <thread>
#include <chrono>
#include <mutex>
using namespace std;
class AtomicTest
{
private:
atomic<long long> atomicCount=0;
long long normalCount=0;
long long mutexCount = 0;
int loop = 100000000;
atomic<long long> atomicCost=0;
atomic<long long> normalCost=0;
atomic<long long> mutexCost = 0;
mutex t;
public:
long long get_tick()
{
chrono::time_point<chrono::system_clock> now = chrono::system_clock::now();
chrono::microseconds now_ticks = chrono::duration_cast<chrono::microseconds>(now.time_since_epoch());
return now_ticks.count();
}
void process1()
{

本文通过代码实测分析了Atomic与Mutex的性能差异。Atomic由于使用CPU级别的原子操作,性能优于Mutex,一般只需数十个指令周期完成锁定,而Mutex可能需要上百个。尽管Atomic不引发上下文切换,但在高并发场景下,由于只能锁住一个,其性能并不比Mutex更优。
最低0.47元/天 解锁文章
753

被折叠的 条评论
为什么被折叠?



