下面是一个多线程执行任务,堵塞等待所有分发任务的执行示例:
g++ -o demo -g parallel_test.cpp -std=c++17 -lX11 -lstdc++fs -ldl -lgbm -ldrm -lEGL -lGLESv2 -lassimp -lpthread
./demo
#include <thread>
#include <iostream>
#include <vector>
#include <ctime>
#include <iostream>
#include <assert.h>
#include <set>
#include <vector>
#include <thread>
#include <iostream>
using namespace std;
void proc(int a)
{
cout << "我是子线程,传入参数为" << a << endl;
cout << "子线程中显示子线程id为" << this_thread::get_id() << endl;
}
int main()
{
vector<std::thread> threads;
for (int i = 0; i < 10; i++)
{
threads.push_back(std::thread(proc, i));
}
vector<std::thread>::iterator it;
for (it = threads.begin(); it != threads.end(); it++)
{
(*it).join();
};
return 0;
}
如果你要调用的方法是一个类方法需要像下面这样调用
threads.push_back(std::thread(&class_name::func, this, func_p1,func_p2))