关于多线程,你需要了解的一些基础知识4 原子类型上的操作

273 阅读1分钟

在 C++11 之前,使用第三方 API 可以实现并行编程,比如 pthread 多线程库,但是在使用时需要创建互斥锁,以及进行加锁、解锁等操作来保证多线程对临界资源的原子操作,这无疑增加了开发的工作量。不过从 C++11 开始,C++ 从语言层面开始支持并行编程,内容包括了管理线程、保护共享数据、线程间的同步操作、低级原子操作等各种类。新标准极大地提高了程序的可移植性,以前的多线程依赖于具体的平台,而现在有了统一的接口。

1.C++11 通过引入原子类型帮助开发者轻松实现原子操作



#include <atomic>
#include <thread>
#include <iostream>
using namespace std;

atomic_int64_t total = 0;       //atomic_int64_t相当于int64_t,但是本身就拥有原子性

//线程函数,用于累加
void threadFunc(int64_t endNum)
{
	for (int64_t i = 1; i <= endNum; ++i)
	{
		total += i;
	}
}

int main()
{
	int64_t endNum = 100;
	thread t1(threadFunc, endNum);
	thread t2(threadFunc, endNum);

	t1.join();
	t2.join();

	cout << "total=" << total << endl;    //10100
}
原文链接:https://blog.csdn.net/K346K346/article/details/85345477