threads.emplace_back
时间: 2023-10-14 07:22:52 浏览: 335
wlpc.rar_C 爬虫_C 爬虫_爬虫 c++_爬虫 visual C++
`threads.emplace_back` 是一个 C++11 标准引入的函数,用于在线程池中创建新的线程。它的作用是将新创建的线程对象添加到 `threads` 容器中。它的用法类似于 `push_back` 函数,不同之处在于 `emplace_back` 可以直接在容器中构造对象,而不需要创建临时对象再进行拷贝或移动操作,因此效率更高。
具体来说,`threads.emplace_back` 的参数可以是一个函数对象,也可以是一个函数指针,还可以是一个函数对象和它的参数。例如:
```c++
#include <iostream>
#include <thread>
#include <vector>
void foo(int n) {
std::cout << "Thread " << n << " is running." << std::endl;
}
int main() {
std::vector<std::thread> threads;
for (int i = 0; i < 5; ++i) {
threads.emplace_back(foo, i);
}
for (auto& t : threads) {
t.join();
}
return 0;
}
```
这个程序创建了一个包含 5 个线程的线程池,每个线程都运行 `foo` 函数,并传入不同的参数。在 `emplace_back` 函数中,第一个参数是函数指针 `foo`,后面的参数是 `foo` 函数所需要的参数。注意,`emplace_back` 函数返回的是一个指向新创建的线程对象的引用,因此可以直接调用 `join` 函数等待线程执行完毕。
阅读全文