Wie verwende ich while true in threads?

Kann jemand Punkt mich bei der Sache ich versuche zu tun in diesem code, weil SecondLoop thread ist nicht erreichbar, auf allen? Es wird erreichbar nur, wenn ich entfernen while(true) Schleife.

#include <iostream>
#include <thread>

using namespace std;

void Loop() {
    while(true) {
        (do something)
    }
}

void SecondLoop() {
    while(true) {
        (do something)
    }
}

int main() {
    thread t1(Loop);
    t1.join();

    thread t2(SecondLoop);
    t2.join(); //THIS THREAD IS UNREACHABLE AT ALL!

    return false;
}

Der Grund, warum ich mithilfe von multithreading ist, weil ich brauche, um die zwei Schleifen zur gleichen Zeit ausgeführt.

  • Was meinst du mit nicht erreichbar? t1.join() im main() wartet, bis t1's job ist getan (und da Sie verwenden, Endlosschleife, es wird nie gemacht werden, es sei denn, Sie haben break; irgendwo drin).
  • Ihre ersten erstellten thread läuft auf einer nie endenden Schleife, so dass Ihr gesperrt sind t1.join(). Oder es fehlt etwas in Ihrem Skelett... Do you break die Schleifen?
  • Denken Sie daran, dass der Aufruf join wird blockiert, bis der thread, dem Sie beitreten beendet wurde.
  • NÖ, habe ich nicht. Ich denke, das ist das problem. Wie soll ich break; in den Schlaufen?
  • Joachim Pileborg, wie soll ich das schaffen-thread dann?
  • Beachten Sie, dass ein thread, und dann direkt wartet bis es fertig ist nicht wirklich sehr hilfreich, als es nicht zu tun, die alle parallel arbeiten. Stattdessen beginnen die beiden threads, die möglicherweise tun einige Arbeit in den Haupt-thread, und schließlich Sie warten, bis die threads fertig zu stellen.

InformationsquelleAutor Purixi | 2015-10-30
Schreibe einen Kommentar