vector<thread> threadPool; 使用代码
时间: 2023-09-06 16:12:47 浏览: 82
threadpool
这段代码创建了一个线程池,可以用于并发执行多个任务。
```c++
#include <iostream>
#include <vector>
#include <thread>
void task(int id) {
std::cout << "Task " << id << " started" << std::endl;
// do some work
std::cout << "Task " << id << " finished" << std::endl;
}
int main() {
const int numTasks = 10;
std::vector<std::thread> threadPool;
for (int i = 0; i < numTasks; ++i) {
threadPool.emplace_back(task, i);
}
for (auto& t : threadPool) {
t.join();
}
return 0;
}
```
这里的 `task` 函数是每个线程要执行的任务,它接受一个整数参数 `id`,用于区分不同的任务。`main` 函数中首先创建一个空的 `threadPool` 向量,然后使用循环向其中添加线程。`emplace_back` 函数用于在向量的末尾添加一个元素(即创建一个新的线程),该元素是通过调用 `std::thread` 的构造函数来创建的。注意,我们将 `task` 函数和参数 `i` 传递给了构造函数,以便每个线程都可以执行不同的任务。
最后,我们使用另一个循环和 `join` 函数来等待所有线程执行完毕。`join` 函数使主线程等待子线程的结束。
阅读全文