Jaka jest różnica między future
i shared_future
?
W jakich przypadkach musimy użyć shared_future
zamiast future
?Jaka jest różnica między przyszłym a shared_future?
Próbowałem znaleźć dobrą dokumentację, która będzie kontrastować z tymi dwiema cechami C++ 11, i nie mogłem znaleźć odpowiedzi (łatwej do odczytania) w Internecie.
To jest moje obecne rozumienie różnic
future
obiekt może być wyświetlona tylko raz zaget()
.shared_future
może być zapytany dowolną liczbę razy.
przypadek użycia: Jeżeli wiele wątków są uzależnione od wyniku asynchronicznego zadania, to musimy użyć shared_future
. Jeśli przyszły obiekt wymaga kilkukrotnego zapytania w tym samym wątku, musimy zamiast tego użyć shared_future
.
żadnych dodatkowych informacji, pułapek lub ogólne wskazówki są mile widziane ...
Więc nie tylko, że R w shared_future muszą być kopiowaneConstructible, są one faktycznie kopiowane, gdzie jak w przyszłości , dostęp nie będzie kopiować i tylko przenieść. Oznacza to, że domyślnie użyjemy przyszłego , ponieważ jest on szybszy i jeśli chcemy, użyj shared_future . Prawidłowo? –
@Ajeet: Dokładnie to wynika z nazewnictwa 'future' i' shared_future'. Na początku były 'unique_future' i' shared_future' i było dużo dyskusji na temat tego, który z nich powinien być "domyślny". I cokolwiek powinno być domyślne, powinno się nazywać "przyszłość". W momencie podejmowania tej decyzji, semantyka ruchu była wciąż bardzo nowa dla komitetu C++, a nie tak dobrze rozumiana.Powierzam komitetowi C++ mądry skok wiary w przypisywanie prostszej nazwy "przyszłości" do "unique_future". –