Cur*_*ous 7 c++ future promise c++11 c++14
谁拥有期货和承诺的共享国家?特别是谁负责构建和删除这些类中的共享状态?或者共享状态应该被引用计数?通过在cppreference上阅读这些文档,我无法得到答案.
我想到它的方式最简单的方法就是让std::promise类负责创建共享状态,然后将其交给在未来被销毁时std::future从std::promisefor中取出的那个.但是这种方法可能导致悬挂的承诺对象.所以我不确定这两者之间应该分享这个州的真实情况.
例如,下面的代码是否会产生未定义的行为(因为未来被销毁时可能会破坏共享状态)?
auto prom = std::promise<void>{};
{
auto fut = prom.get_future();
}
prom.set_value();
Run Code Online (Sandbox Code Playgroud)
此外,std::promise::~promise关于cppreference 的文档说"如果共享状态已准备好,则释放它",这让我认为共享状态不是引用计数.
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |