在一个线程中创建promise并在另一个线程中设置promise

时间:2014-07-29 11:32:38

标签: multithreading c++11 promise boost-thread

我是否可以在线程中创建boost::promise<void>,并通过boost::promise<void>::set_value()将其值设置在另一个不同的线程中。

我想我可能会因此而崩溃,所以我必须猜测不行,但我需要确认。提前谢谢。

P.S。:请注意,我正在使用boost实现。

1 个答案:

答案 0 :(得分:2)

是的,你可以这样做,但你必须确保对set_value()的调用与其他线程中的任何内容都不冲突,例如构造函数的完成或析构函数的开始。

(根据C ++标准,您甚至无法对set_value()get_future()进行可能的并发调用,但这是defect并且应该得到修复。)

为了给出更准确的答案,有必要确切了解您的代码正在做什么。