PThread Programmierung



  • Hallo

    Ich habe folgendes Problem: Ich möchte einen Thread erstellen und dabei ein Array von Integern als Parameter übergeben. Wenn ich die Werte im Thread selber aber ausgebe, kommen dabei falsche Werte raus:
    (Ich speichere die TIDs in einem Array weil später noch mehrere Threads erstellt werden sollen, im Moment möchte ich jedoch nur die Ausgabe von einem Thread testen)

    #include <pthread.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    void * printNumbers(void * number) {
        int* nbr = (int*) number;
    
        printf("%i\n", nbr[0]);
        printf("%i\n", nbr[1]);
    }
    
    int main(int argc, char *argv[]) {
        int n = atoi(argv[1]);
    
        pthread_t * tid = malloc(n * sizeof(*tid));
    
        int * arg = malloc(2 * sizeof(*arg));
    
        arg[0] = 6;
        arg[1] = 3;
    
        pthread_create(&tid[0], NULL, &printNumbers, &arg);
    
        pthread_join(tid[0], NULL);
    }
    


  • Geminus schrieb:

    Ich habe folgendes Problem: Ich möchte einen Thread erstellen und dabei ein Array von Integern als Parameter übergeben.

    Dann mach doch genau das. Im Moment übergibst du die Adresse der lokalen Variablen arg .



  • TyRoXx schrieb:

    Geminus schrieb:

    Ich habe folgendes Problem: Ich möchte einen Thread erstellen und dabei ein Array von Integern als Parameter übergeben.

    Dann mach doch genau das. Im Moment übergibst du die Adresse der lokalen Variablen arg .

    Ach ja, ich merke gerade arg ist ja vom Typ int*...


Anmelden zum Antworten