Ich habe einen Boost-Thread erstellt mit: boost :: thread drd (& amp; connectionThread); wo connectionThread eine einfache Void-Funktion ist. Dies funktioniert jedoch gut, wenn ich versuche, einige Sekunden warten zu lassen, zum Beispiel mit:
%Vor%Das Programm stürzt bei der Zeile xtime_get ab. Selbst wenn man manuell versucht, xt.sec einzustellen, funktioniert es nicht. Ich habe mehrere andere Methoden ausprobiert, aber ich kann es scheinbar nicht funktionieren lassen. Gibt es etwas, was ich falsch mache? Gibt es einen einfacheren Weg, um mein Ziel zu erreichen?
boost::xtime_get()
sieht wie eine der wenigen Boost-APIs aus, die nicht in einer Kopfzeile implementiert sind. Daher könnte es so aussehen, als ob die Boost-Bibliothek nicht korrekt kompiliert wurde. Dies ist wahrscheinlich ähnlich wie bei Aufrufkonventionen oder etwas anderem. Ich weiß nicht genau, welche Schritte Sie benötigen, um die Bibliothek neu zu erstellen - alles, was ich je in Boost verwendet habe, waren Dinge, die nur die Header benötigen.
Es kann hilfreich sein, wenn Sie nur in die Routine xtime_get()
zurückkehren, selbst wenn es sich um die Assembly-Ebene handelt. Die xtime
Struktur ist sehr, sehr einfach und xtime_get()
tut wirklich nichts mehr, als eine plattformspezifische API aufzurufen, um die Zahlen in die xtime
struct zu bekommen.
Mit diesem Code kann ich sagen, dass die Methode xtime_get
den Typ der zurückgegebenen Metrik zurückgibt. Das heißt, Sie müssen sicher sein, dass zum Beispiel die folgende Behauptung gilt:
Es kann vorkommen, dass dies in Ihrem System nicht der Fall ist.
Aber wenn ich mir den Code noch einmal anschaue, fällt mir ein, dass der Absturz nicht unbedingt mit diesem Aufruf zusammenhängt, sondern mit anderen Dingen, die Sie in Ihrer Anwendung tun. Auch hier kommt es darauf an, wo Sie diesen Code verwenden. Ist es in der operator()
deines Threads?
Tags und Links c++ multithreading boost