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:
handler_type
. Diese Vorlage wird verwendet, um basierend auf der Signatur des asynchronen Vorgangs den tatsächlichen zu verwendenden Handler zu bestimmen. 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()
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
.
Ausgabe:
%Vor%Tags und Links c++ boost-asio boost-thread