使用C++ thread class 实现 1到10000的多线程求和:
#include <iostream>
#include <vector>
#include <thread>
struct AddThreadParam{
int start,end;
int sum;
AddThreadParam():start(0),end(0),sum(0){
}
}
void AddThread(AddThreadParam& param){
param.sum = 0;
for(int num = param.start; num < param.end; num++){
param.sum += num;
}
printf("thread id: %d\n", std::this_thread::get_id());
printf("sum(%d:%d) = %d\n", param.start, param.end, param.sum);
}
int main(){
int core_num = std::thread::hardware_concurrency(); // cpu 物理核心数
int thread_num = core_num*2; // 一般逻辑线程数是物理核心数2倍
std::vector<AddThreadParam> add_thread_params(thread_num); // 线程函数参数
std::vector<std::thread> add_threads(thread_num); // 线程对象
// 求 1+2+...+10000
int step = (10000+thread_num-1)/thre