我试图理解 C++ 中的多行,但我被困在这个问题中:如果我在 < em> 环中为 < / em > 启动线条,它们打印错误的值。 这是代码 :
#include <iostream>
#include <list>
#include <thread>
void print_id(int id){
printf("Hello from thread %d
", id);
}
int main() {
int n=5;
std::list<std::thread> threads={};
for(int i=0; i<n; i++ ){
threads.emplace_back(std::thread([&](){ print_id(i); }));
}
for(auto& t: threads){
t.join();
}
return 0;
}
我本来期望得到打印值 0,1,2,3,4,4,4,4,4的打印,但我经常得到同样的值两次。这是输出:
Hello from thread 2
Hello from thread 3
Hello from thread 3
Hello from thread 4
Hello from thread 5
我错过了什么?