我想做一个for循环,创建更多的线程.
我尝试过:
int i; for (i = 0; i < 10; i++) { thread t1(nThre); t1.join(); cout << "Joined thread n'" << i << '\n'; }
但它不起作用.nThre
顺序调用(这是一个简单的void
例程).
我还询问我是否可以使用预增的i
只是一个int
,所以:
++i
insted的的i++
,这应该是更好的性能.
您的问题是您启动一个线程,并在开始下一个线程之前加入它.你应该这样做:
int i; vectorthreads; for (i = 0; i < 10; i++) { threads.push_back(thread(nThre)); cout << "Started thread n'" << i << "\n"; } for (i = 0; i < 10; i++) { threads[i].join(); cout << "Joined thread n'" << i << "\n"; }
首先,启动所有线程,然后等待它们完成.
对于之间的区别i++
和++i
,因为i
是一个整数,它使这里没有什么区别.有关详细信息,请参阅此答案.