我是否可以在线程中创建boost::promise<void>
,并通过boost::promise<void>::set_value()
将其值设置在另一个不同的线程中。
我想我可能会因此而崩溃,所以我必须猜测不行,但我需要确认。提前谢谢。
P.S。:请注意,我正在使用boost实现。
答案 0 :(得分:2)
是的,你可以这样做,但你必须确保对set_value()
的调用与其他线程中的任何内容都不冲突,例如构造函数的完成或析构函数的开始。
(根据C ++标准,您甚至无法对set_value()
和get_future()
进行可能的并发调用,但这是defect并且应该得到修复。)
为了给出更准确的答案,有必要确切了解您的代码正在做什么。