warten auf alle threads



  • gibt es in der pthread-bibliothek eine funktion mit der man auf alle existierenden threads eines prozesses warten kann, wie pthread_join() für einen einzigen thread?
    oder muss ich mir selbst eine liste mit allen gestarteten threads erstellen und dann für jeden einzigen über eine schleife pthread_join() aufrufen, um auf alle zu warten?



  • Ich glaube, so etwas gibt es nicht. Da wirst du wohl auf alle einzeln warten müssen.



  • ja, dass hätte ich mir auch fast gedacht. ich konnte auch nirgendwo etwas dazu finden.
    muss ich wohl wieder alles selber schreiben.

    aber dass ich die pthread_ts in einer liste speichere, dann mit einer schleife über die einzelnen listenelemente iteriere und bei jedem durchgang pthread_join() mit dem entsprechenden pthred_t aufrufe, müsste doch funktionieren, oder?
    oder gibt es noch eine elegantere lösung?



  • Das sollte fuktionieren. Ich hatte dieses Problem auch neulich. Hab es halt so gemacht:

    pthread_join(thread1, NULL);
    pthread_join(thread2, NULL);
    pthread_join(thread3, NULL);
    pthread_join(thread4, NULL);
    

    Halt das Gleiche, nur ohne Schleife.
    Was besseres fiel mir auch nicht ein.


Anmelden zum Antworten