future
和shared_future
和有什么不一样?
在什么情况下我们必须使用shared_future
而不是future
?future和shared_future有什么区别?
我试图找到很好的文档来对比C++ 11的这两个特性,并且我在网上找不到答案(至少容易理解)。
这是我目前的分歧
future
对象可以一次为get()
查询了解。shared_future
可以查询任意次数。
使用案例: 如果多个线程依赖于异步任务的结果,那么我们就必须使用shared_future
。 如果将来的对象需要在同一个线程中多次查询,那么我们必须改用shared_future
。
的任何详细信息,陷阱或一般准则,欢迎...
因此,不仅在shared_future中的R必须是copyConstructible,它们实际上是被复制的,在将来中,访问将不会复制并且只能移动。 这意味着,默认情况下使用未来的,因为它更快,并且在必要时使用shared_future 。正确吗? –
@Ajeet:这实际上是“future”和“shared_future”命名的确切推理。一开始有'unique_future'和'shared_future',关于哪一个应该是“默认”有很多讨论。无论哪一个应该是默认的,那个应该被命名为“未来”。在做这个决定的时候,移动语义对C++委员会来说还是很新的,而且这一点还不是很好理解。我相信C++委员会将明智的“未来”名称分配给“unique_future”,这是一种明智的信心飞跃。 –