Thread Problem



  • Hi,

    ich beschäftige mich grad mit Threads und habe da ein kleines Problem. In einer Schleife, erzeuge ich mir 8 Threads:

    for (int i=0; i < 4; i++)
    {
       pthread_create(&showmessage, NULL, message, (void *)id);
       pthread_create(&showmessage, NULL, message, (void *)-id);
    }
    

    Später in der Anwendung, will ich abwarten, dass diese Thread beenden sind und habe da ein:

    pthread_join(showmessage, NULL);
    

    stehen.

    Leider werden jetzt nicht immer alle Thread ausgeführt. Testweise hatte ich nun mal

    pthread_join(showmessage, NULL);
    pthread_join(showmessage, NULL);
    pthread_join(showmessage, NULL);
    pthread_join(showmessage, NULL);
    pthread_join(showmessage, NULL);
    pthread_join(showmessage, NULL);
    pthread_join(showmessage, NULL);
    pthread_join(showmessage, NULL);
    

    stehen, damit jeder Thread beendet wird. Leider hatte dies auch nicht funktioniert.

    Wie muss es richtig gehen, wenn ich mit Threads arbeite?

    Steven



  • > [..] In einer Schleife, erzeuge ich mir 8 Threads [..]

    Jeder Thread braucht seine eigene `tid' also musst du acht pthread_t Variablen haben

    pthread_t tid[8];
    
    for (int i = 0; i < 8; i++) {
        pthread_create(&tid[i], NULL, thread_func, param);
    }
    
    for (int i = 0; i < 8; i++) {
        pthread_join(&tid[i]);
    }
    

    mfg


Anmelden zum Antworten