Donnerstag, Dezember 12, 2019

C++, dass ein boost thread warten Sie 1 Sekunde

Habe ich einen boost-thread mit:
boost::thread gew(&connectionThread); wo connectionThread ist eine einfache void-Funktion. Dies funktioniert gut, jedoch, wenn ich versuche, es zu machen, warten Sie einige Sekunden, zum Beispiel mit:

boost::xtime xt;

boost::xtime_get(&xt, boost::TIME_UTC);

xt.sec += 1;

boost::thread::sleep(xt); //Sleep for 1 second

Das Programm stürzt bei der xtime_get Linie. Sogar, wenn Sie manuell versuchen, xt.sec funktioniert es nicht. Ich habe versucht, mehrere andere Methoden, aber ich kann nicht scheinen, damit es funktioniert. Gibt es etwas, was ich falsch mache? Ist es ein einfacher Weg, um mein Ziel erreichen?

  • Mehr information erforderlich – dieses stürzt auf die xtime_get Linie? Wenn ja, wie wird es Abstürzen, wenn Sie manuell die xt (oder es gerade nicht so Verhalten, wie Sie wollen)?
  • In welcher Weise wird es nicht funktionieren, wenn Sie versuchen, xt.Sek manuell? xt.sec = 1 ist wahrscheinlich eine unglaublich kurze Zeit, wie ich denke, dass die sec ist zumindest in Millisekunden. Wenn, so würden Sie schlafen, für eine Millisekunde.
  • boost.org/doc/libs/1_38_0/doc/html/thread/… es sieht so aus, dass die aktuelle version der Bibliothek verwendet nun die Komponenten, die von boost::date_time geben Sie die Länge.
  • hoffe Sie sind nicht zu vergessen, gehören header-Datei <boost/thread/xtime.hpp> wie mich
InformationsquelleAutor | 2009-04-22

3 Kommentare

  1. 26

    Gibt es einen einfacheren Weg

    Vielleicht etwas entlang diesen Linien:

    boost::this_thread::sleep(boost::posix_time::seconds(1));

    boost::thread::sleep(boost::posix_time::seconds(1));

    • deine zweite Möglichkeit (was ich tryied erste) funktioniert nicht… der erste ist in Ordnung
  2. 2

    boost::xtime_get() sieht aus wie einer von den wenigen Boost-APIs, die nicht umgesetzt in eine Kopfzeile, das könnte also so etwas wie nicht mit der Boost-library kompiliert korrekt. Dies ist wahrscheinlich somelike mit unpassenden Aufrufkonventionen oder so etwas. Ich weiß nicht, aus der Spitze von meinem Kopf, welche Schritte müssen Sie möglicherweise durch zu gehen, um den Wiederaufbau der Bibliothek – alle, die ich je benutzt habe in Boost wurde Zeug, das nur die Kopfzeilen.

    Könnte es hilfreich sein, wenn Sie gerade Spur in die xtime_get() routine, auch wenn es auf der assembly-Ebene. Die xtime struct ist sehr, sehr basic und xtime_get() wirklich nicht alles tun, mehr als call eine Plattform-spezifische API, um die zahlen zu Stecker in die xtime struct.

  3. 0

    Mit diesem code (nicht-wissen, zum Beispiel, wo Sie es), alles, was ich sagen kann ist, dass die xtime_get Methode gibt den Typ der Kennzahl zurückgegeben. Das heißt, Sie müssen sicher sein, zum Beispiel, dass die folgenden assert hält:

    int res = boost::xtime_get(&xt, boost::TIME_UTC);
    assert(res == boost::TIME_UTC);

    Kann es passieren, dass in Ihrem system dies nicht der Fall ist.

    Jedoch, sich den code wieder kommt es mir in den Sinn, dass der Absturz nicht im Zusammenhang mit diesem Aufruf insbesondere, aber andere Dinge, die Sie tun in Ihrem Antrag. Wieder, es hängt davon ab, wo du bist, mit diesem code. Ist es innerhalb der operator() von deinem thread?

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...