解决的问题:
多个互不相干的任务单线程处理较耗时,多线程将多任务均分后执行提高程序执行速度(类似线程池,本文更偏重于多任务的分配)。
任务封装
假设有任务类Task如下,每个任务初始化时传入要执行的参数,本例以传入n测试,任务执行结果以n*n表示,具体执行函数在exec()函数中执行,假设每个任务耗时100毫秒:
class Task
{
public:
Task(int n)
:m_id(n)
, m_result(0)
{}
int getId() { return m_id; }
int getResult() { return m_result; }
// 任务执行
void exec()
{
// 假设每个任务需要100毫秒
this_thread::sleep_for(std::chrono::milliseconds(100));
cout << m_id << " ";
// 测试假设将n*n作为每个任务的执行结果
m_result = m_id * m_id;
}
private:
int m_id; // task id
int m_result; // 任务执行结果
};
任务管理类
TaskManager是一个任务管理类,它负责执行自己手头上的任务,构造函数中传入vector<Task>
作为它的任务集。
重载()执行手头上的所有任务,并将任务结果以std::map<int, in