C++11多线程之mutex等锁机制和atomic原子操作对比

您所在的位置:网站首页 c++11互斥锁 C++11多线程之mutex等锁机制和atomic原子操作对比

C++11多线程之mutex等锁机制和atomic原子操作对比

2024-02-27 14:12| 来源: 网络整理| 查看: 265

一.简介 这里以mutex锁机制为例. mutex函数:是一套专门用于线程同步锁机制的函数. #include using namespace std; atomic原子操作:是在新标准C++11,引入了原子操作的概念,并通过这个新的头文件提供了多种原子操作数据类型,例如,atomic_bool,atomic_int等等. #include using namespace std; 二.效率对比 #include #include #include #include #include #define TEST_DATA_LENGTH 100000 //每个线程操作次数 #define THREAD_NUM 10 //线程个数 using namespace std;//引入std命名空间 mutex m;//声明互斥锁m long n_total = 0; long m_total = 0; atomic a_total = 0;//原子量的初始化 //在不采用互斥锁和原子类的情况下 void test_f_normal() { for(int i = 0; i < TEST_DATA_LENGTH; i++) { n_total += 1; } } //使用mutex互斥锁 void test_f_mutex() { for(int i = 0; i < TEST_DATA_LENGTH; i++) { m.lock(); m_total += 1; m.unlock(); } } //使用原子操作 void test_f_atomic() { for(int i = 0; i < TEST_DATA_LENGTH; i++) { a_total += 1; } } void main() { thread ts[THREAD_NUM]; //normal mode ,result is error clock_t start = clock(); for(int i = 0; i < THREAD_NUM; i++) { ts[i] = thread(&test_f_normal); } for(int i = 0; i < THREAD_NUM; i++) { ts[i].join(); } clock_t end = clock(); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3