C++ 11 的新标准支持了被封装的多线程库,虽然已经学过了C++ 的<thread>
,但是今天想到用多线程处理一下求和的问题。
OK现在就直接先把代码贴出来吧
PS:由于每个人的电脑的CPU核数都不同,我的电脑就是一台很烂的笔记本(双核,除了打代码和扫雷没什么其他东西),众所周知,并行的时候如果线程超过cores会引起频繁的上下文切换,这样反而会降低性能,所以最好不要用超过你cores数目的线程去做计算量密集的处理
PS2: std::thread::hardware_concurrency()
可以返回你的CPU核数,在C++库不能返回CPU信息下可能返回0
#include<iostream>
#include<algorithm>
#include<thread>
#include<numeric>
#include<vector>
#include<functional>
using namespace std