boost :: asio mit boost :: unique_future

8

Nach Ссылка können wir verwenden boost :: asio mit std::future . Aber ich konnte keine Informationen über die Arbeit mit boost::unique_future finden, die mehr Funktionen hat, wie zB then() . Wie kann ich verwenden?

    
ikh 15.03.2014, 13:55
quelle

1 Antwort

13

Boost.Asio bietet nur erstklassige Unterstützung für asynchrone Operationen, um ein C ++ 11 std::future oder einen tatsächlichen Wert in stackful coroutines . Dennoch sind die Anforderungen für asynchrone Operationen dokumentiert, wie der Rückgabetyp für andere Typen angepasst wird, z. B. Boost.Thread boost::unique_future . Es erfordert:

  • Eine Spezialisierung der Vorlage handler_type . Diese Vorlage wird verwendet, um basierend auf der Signatur des asynchronen Vorgangs den tatsächlichen zu verwendenden Handler zu bestimmen.
  • Eine Spezialisierung der Vorlage async_result . Diese Vorlage wird sowohl zum Bestimmen des Rückgabetyps als auch zum Extrahieren des Rückgabewerts vom Handler verwendet.

Unten finden Sie ein minimales vollständiges Beispiel, das deadline_timer::async_wait() Rückgabe von boost:unique_future mit einer grundlegenden Berechnung, die über eine Reihe von Fortsetzungen durchgeführt wird, die mit .then() . Um das Beispiel einfach zu halten, habe ich mich dafür entschieden, handler_type nur für die im Beispiel verwendeten asynchronen Signaturen zu spezialisieren. Für eine vollständige Referenz empfehle ich dringend, use_future.hpp und impl/use_future.hpp .

%Vor%

Ausgabe:

%Vor%     
Tanner Sansbury 15.03.2014, 23:12
quelle

Tags und Links