3
循环内的c ++线程输出错误的值
我试图理解c ++中的多线程,但是我陷入了这个问题:如果我在for循环中启动线程,它们会打印错误的值。这是代码: #include <iostream> #include <list> #include <thread> void print_id(int id){ printf("Hello from thread %d\n", 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的值,但是我经常两次得到相同的值。这是输出: Hello from thread 2 Hello from thread 3 …