boost threadpool库下载链接https://github.com/CppPeng/threadpool,boost库无须编译可以直接使用
在使用过程中可能会报error C2065: 'TIME_UTC' : undeclared identifier错误
解决方案参考https://github.com/vpython/visual/issues/3
#include <iostream>
#include <string>
#include "boost/bind.hpp"
#include "boost/thread.hpp"
#include "boost/threadpool.hpp"
using namespace std;
using namespace boost;
const int COUNT = 10000;
void firstTask()
{
for (int i = 0; i < COUNT; ++i) {
// this_thread::get_id()获取本线程的线程id
cout << this_thread::get_id() << " " << i << endl;
}
}
void secondTask(std::string str)
{
for (int i = 0; i < COUNT; ++i) {
cout << str << ":" << this_thread::get_id() << i << endl;
}
}
int main(void)
{
// thread::hardware_concurrency()获取cpu个数
int numKernel = thread::hardware_concurrency();
cout << numKernel << endl;
threadpool::pool tp(numKernel);
tp.schedule(&firstTask);
tp.schedule(&firstTask);
tp.schedule(&firstTask);
tp.schedule(boost::bind(&secondTask, std::string("second task")));
// 等待执行完毕
tp.wait();
return 0;
}