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*...