c++ - 如何手动创建将在析构函数中阻塞的未来
问题描述
我已阅读http://scottmeyers.blogspot.com/2013/03/stdfutures-from-stdasync-arent-special.html但它没有显示如何实现相同行为的示例 - 即future 将阻塞在析构函数中,与从 async 返回的析构函数相同,但不使用任何 async。
你能举一个这样的例子吗?谢谢!
解决方案
如果您关注该文章下方的评论线程,您会发现其他专家不同意:
future
不是 from 的 s应该async
在析构函数中阻塞。用 Scott Meyers 解释的标准,它应该是这样的。
马蒂尼奥费尔南德斯:
我不明白为什么这是所有期货的要求:您引用的这个特定要求来自 上的要求
std::async
,而不是 上的要求std::future
。对析构函数的唯一要求std::future
是它“释放共享状态”。碰巧来自的共享状态std::async
添加了您引用的要求,但标准库中没有其他共享状态有这样的要求。
草本萨特:
tl;dr:Martinjo 已经正确回答了这个问题——文章不正确,阻塞仅适用于从
std::async
with launch policy返回的期货launch::async
。Scott 说:在 30.6.8/5 中,我们看到 [...] 这是对任何未来对象的要求,而不仅仅是从
std::async
调用返回的对象。这不遵循。30.6.8 是
std::async
. 那里所说的任何内容都是特定于std::async
.但正如 Martinho 已经正确说过的那样,这个例外仅在第 30.6.8 节“函数模板异步”中,一般不适用于期货。
结论:我认为您无法找到您正在寻找的示例。
推荐阅读
- javascript - 将函数结果设置为外部 javascript 文件上同一函数内的变量
- reactjs - React with Redux:子组件在 props 改变后不会重新渲染(即使它们不是浅相等的)
- java - 将 Firebase 图像 URI 共享给其他应用时共享失败?
- r - 如何用 R 创建聚类柱形图?
- javascript - 由于代码冲突,引导模式不会关闭
- python - 更新存储在数据库中的数据(python+ Beautiful Soup+mysql)
- ssl - http -> https 之后 nginx 没有找到静态内容
- ios - 声音在 iPhone 上播放,但不在模拟器中
- c# - Web api - 在应用程序的整个生命周期中保存用户数据,如 Session
- javascript - Vusual 工作室代码 @flow create-react-app