Threads: while (otherThreadIsRunning)
-
Hallo
Ich muss ein kleines multithread Progrämmchen schreiben. Dazu muss pthread.h verwendet werden.
Gibt es im Thread2 eine einfache Möglichkeit, um zu prüfen, ob Thread1 noch läuft oder nicht? Bisher habe ich einfach eine globale Variable, welche am Ende von Thread1 auf true gesetzt wird. Im Thread2 wird einfach die Variable geprüft und entsprechend gehandelt.Geht das vielleicht auch mit Mitteln aus der pthread Bibliothek oder ist sonst eine andere Methode vorzuziehen?
Danke

-
Wozu musst du das wissen? Wenn du zum Beispiel mit einem Thread auf den anderen warten willst, also bis der andere fertig ist, dann kannst du das mit
pthread_joinmachen.Grüssli
-
Das ganze soll eigentlich parallel laufen. Thread1 liest Zahlen innerhalb einer Datei aus und speichert diese. Thread2 summiert diese dann Zahl für Zahl zusammen.
In Thread2 würde ich nun gerne soetwas verwenden:
while (thread2IsRunning) { while (!buffer.empty()) { // code } }pthread_join() verwende ich bereits.
Gibts da etwas?
-
Erscheint mir nicht wirklich eine sinnvolle Art zu sein, zwei Threads zu verwenden. Diese Arbeiten können ja gar nicht wirklich parallel gemacht werden und nach dem parsen noch schnell zwei float Zahlen zusammen zu rechnen, ist wirklich keine Sache, wenn man bedenkt was du alles brauchst, um die Zahlen in einem Puffer abzulegen und diesen noch zu synchronisieren!
Um ein Polling zu verhindern, müsste man beim Prüfen, ob der andere Thread noch läuft, zudem wohl noch auf ein zweites Mutex Objekt setzen. Das wird dann langsam wirklich etwas aufwändig für so wenig.

Grüssli
-
Danke für eure Hilfe.
Das das Programm etwas praxisfremd ist, ist mir auch klar. Es war aber eine Übung, die wir so umsetzen mussten. Ich habe es nun doch mit der Variable gelöst und es funktioniert nun einwandfrei.