首页 > 编程语言 > 详细

C++原子操作

时间:2020-08-25 00:20:13      阅读:93      评论:0      收藏:0      [点我收藏+]

1.原子操作:原子操作可以理解为不需要用到互斥量加锁技术的多线程并发编程方式。

2.特点

  (1):当程序中代码频繁用到互斥量(锁),此时原子操作的效率比互斥量(锁)高。

  (2):原子操作一般针对的是一个变量,而不是一个代码段,

3.代码对比,以下代码1比代码2效率高很多

代码1

技术分享图片
#include <iostream>
#include<thread>
#include<string>
#include<vector>
#include<algorithm>
#include<windows.h>
#include<list>
#include<mutex>
#include<future>
#include<chrono>
#include<atomic>

std::atomic_int myCount = 0;
int ThreadFun()
{
    for (int i = 0; i < 10000000; i++)
    {
        myCount++;
    }
    return 5;
}

int main()
{
    std::thread t1(ThreadFun);
    std::thread t2(ThreadFun);
    t1.join();
    t2.join();
    std::cout << "myCout结果:" << myCount <<std::endl;
    
    return 0;
}
View Code

代码2

技术分享图片
#include <iostream>
#include<thread>
#include<string>
#include<vector>
#include<algorithm>
#include<windows.h>
#include<list>
#include<mutex>
#include<future>
#include<chrono>
#include<atomic>

int myCount = 0;
std::mutex mut;
int ThreadFun()
{
    for (int i = 0; i < 10000000; i++)
    {
        mut.lock();
        myCount++;
        mut.unlock();
    }
    return 5;
}

int main()
{
    std::thread t1(ThreadFun);
    std::thread t2(ThreadFun);
    t1.join();
    t2.join();
    std::cout << "myCout结果:" << myCount <<std::endl;
    
    return 0;
}
View Code

 

C++原子操作

原文:https://www.cnblogs.com/zwj-199306231519/p/13557230.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!