我有一个程序,它应该循环启动8个线程,它将使用std::promise
返回一个值。所以我想我需要创建一个包含8个promise
个对象的向量,获取它们的future
,并使用这些promise
来返回值,然后使用join
线程main
。问题是:在下一次迭代中,我将创建另外8个线程 - 我可以重用相同的promise
对象,还是需要再创建8个?我还没有找到任何方法在互联网上重复使用它们,但也许我错过了一些明显的东西?
答案 0 :(得分:12)
要重复使用承诺,只需重新分配即可。
std::promise<int> my_promise;
//use the promise
my_promise = std::promise<int>(); //now you have a new promise
答案 1 :(得分:1)
std :: promise只能使用一次,所以我建议每次都创建这组promise,或者使用其他机制在线程之间进行通信(比如vector + mutex)。 您还可以考虑使用std :: async而不是创建线程。