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

问题描述 投票:0回答:1

我创建了一个 promise 和 future 对象。

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

我把promise传给后台线程,它最终会调用 p.set_value(myInt).

在主线中,我称之为 f.get().

如果... f.get() 叫做 之后 p.set_value(myInt) 是叫什么?

f.get() 立马返回 myInt?

c++ multithreading promise future race-condition
1个回答
2
投票

根据文档,它调用的是 等待 - 以便等待结果。根据该描述又说:。

阻止,直到有了结果。

这似乎意味着如果已经有了结果,它就不应该阻塞(即使是短暂的阻塞)。因此,除了一些理智检查、mutex处理或类似的情况外,我认为它应该按照描述立即返回。

你是有实际的问题,还是只是在问?

© www.soinside.com 2019 - 2024. All rights reserved.