我有一个程序,它应该循环启动 8 个线程,这将使用
std::promise
返回一个值。所以我想我需要创建一个由 8 个 promise
对象组成的向量,获取它们的 future
,并使用这些 promise
返回值,然后使用 join
来返回 main
线程。问题是这样的:在下一次迭代中,我将再创建 8 个线程——我可以重用相同的 promise
对象,还是需要再创建 8 个线程?我还没有找到任何方法在互联网上重用它们,但也许我错过了一些明显的东西?
要重用 Promise,只需重新分配它们即可。
std::promise<int> my_promise;
//use the promise
my_promise = std::promise<int>(); //now you have a new promise
std::promise 只能使用一次,因此我建议每次都创建这组 Promise,或者使用其他机制在线程之间进行通信(例如向量 + 互斥体)。 您还可以考虑使用 std::async 而不是创建线程。
这样做更简单。如果您稍后决定更改值类型,则不必触及该线。
my_promise = {};