C ++ Einen Boost-Thread warten lassen, 1 Sekunde warten

8

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?

    
schnaader 22.04.2009, 14:54
quelle

3 Antworten

26
  

Gibt es einen einfacheren Weg?

Vielleicht etwas in dieser Richtung:

%Vor%

%Vor%

    
Anonymous 28.04.2009 21:53
quelle
2

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.

    
Michael Burr 22.04.2009 16:57
quelle
0

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:

%Vor%

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?

    
Diego Sevilla 22.04.2009 16:11
quelle

Tags und Links