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」,這是一種明智的信心飛躍。 –