Boris ' Artikel zeigt uns, wie man eine Erweiterung von boost :: asio erstellt. Ich versuche signal_set und async_wait bei registrierten Signalen hinzuzufügen. Dann hängt das Programm, bis ein zweites SIGINT ausgelöst wird. Allerdings würde ich es gerne in nur einem Signal beenden.
Hier ist mein Code. Ich teste es mit gcc-4.6.3 und boost-1.52.0 auf Ubuntu.
Zum Kompilieren -
gcc -I/boost_inc -L/boot_lib main.cpp -lpthread -lboost_system -lboost_thread
Nach dem Probieren eines Beispiels , das von der Autor von Asio, ich konfrontiert das gleiche Verhalten. Folglich suche ich in der Bibliotheksquelle nach und stelle fest, dass die Quelle die Schnittstellen von io_service_impl anstatt denen von io_service verwendet. Darüber hinaus unterscheidet sich ein Operation Funktor , der auf dem io_service_impl veröffentlicht wurde, von denen, die vom io_service aufgerufen werden. Insgesamt habe ich beschlossen, das Timer-Beispiel entsprechend den internen Schnittstellen von asio neu zu schreiben.
Hiermit präsentiere ich das umgeschriebene Timer-Beispiel.
%Vor%Zum Kompilieren
gcc -I/boost_inc -L/boot_lib main.cpp -lpthread -lboost_system -lboost_thread
Der neue Timer funktioniert einwandfrei. Dennoch würde ich gerne wissen, wie man eine non-intrusive Erweiterung von asio schreibt.
Tags und Links c++ boost boost-asio