如果在promise.set_value()之后调用future.get()会发生什么?

水银0114

我创建一个承诺和未来的对象:

Promise<int> p = promise<int>(); 
Future<int> f = p.get_future();

我将诺言传递给了最终调用的后台线程p.set_value(myInt)

在主线程中,我叫f.get()

如果f.get()被称为后该 p.set_value(myInt)怎么办?

f.get()马上回来myInt吗?

达鲁尼

根据文档,它称等待-为了等待结果。依次根据该描述指出:

阻塞直到结果可用。

这似乎意味着如果已经有结果,则不应阻塞(即使很短时间)。因此,除了一些健全性检查,互斥量处理之类的措施之外,我认为它会按照说明立即返回。

您是否有实际问题或只是问什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

网络编程:如果在选择之后和发送之前网络断开连接会发生什么

如果在 >(重定向)之后没有定义目的地会发生什么?

如果在DLL中调用函数时没有传递足够的参数,会发生什么?

如果在构造函数中使用super调用重写的方法会发生什么

如果在取消点上调用信号处理程序,会发生什么情况?

如果在ajax调用期间显示警报窗口,会发生什么情况?

如果在匿名子程序中调用shift,会发生什么情况?

如果在关闭连接之前未调用transaction.Rollback / Commit,会发生什么情况?

如果在使用PTHREAD_PROCESS_SHARED时不调用pthread_mutex_destroy,会发生什么情况

如果在laravel5中没有DB :: commit()的情况下调用DB :: beginTransaction,会发生什么?

如果在枚举时覆盖ImmutableHashSet会发生什么?

如果在SET foreign_key_checks = 0;之后插入,那些没有相应外键的行会发生什么?

JS:如果在 then 语句的回调中返回一个新的 Promise 会发生什么

如果在使用malloc之后它返回了NULL指针并且您继续尝试使用该指针,将会发生什么?

如果在将P设置为nil之后将C类的字段F分配给指针P,在FreePascal中会发生什么?

如果在同一集合上两次调用同一迭代器,会发生什么情况?

如果在其他线程仍在运行时调用exit(0),会发生什么情况?

如果从Stream API在filter()之后调用limit()会发生什么?

如果在事务执行过程中终止JVM进程,会发生什么情况?

如果在 writeFileSync 操作期间中止 Node 脚本,文件会发生什么情况?

如果在我的java文件中使用了很多@SuppressWarnings,会发生什么情况?

如果在更新过程中安排关机,会发生什么情况?

如果在JVM仍在使用Jar时更新了Jar,会发生什么情况?

如果在Spring MVC中交换@service和@repository批注会发生什么

如果在不指定用户的情况下执行sudo passwd会发生什么?

如果在此之前完成承诺,会发生什么?

如果在安装系统更新的同时关闭Windows,会发生什么最糟糕的事情?

如果在已经初始化的变量上使用`var`会发生什么情况

如果在crontab文件中使用@reboot reboot,会发生什么情况?