Ich habe ein Problem mit der Weitergabe eines Elements eines Arrays durch pthread_create als Parameter.Übergabe eines Elements eines Arrays (struct) durch pthread_create
Ich habe diese Struktur:
struct threadInfo {
int threadNumber;
int sleepTime;
};
I initialisiert das Array (in Funktion) wie folgt aus:
struct threadInfo info[1];
dann in einer while-Schleife I dies tun:
int i = 0;
...
while (i < 2) {
pthread_mutex_lock(&countMutex);
if (threadsCount < MAX_THREAD) {
info[i].threadNumber = ++threadsCount;
pthread_mutex_unlock(&countMutex);
info[i].sleepTime = rand() % (10 + 1 - 1) + 1;
pthread_create(&threads[i], NULL, lawine, &info[i]);
i++;
}
else {
pthread_mutex_unlock(&countMutex);
break;
}
}
threadsCount ist eine globale Var.
In der ersten Runde funktioniert es gut (info [0]). Aber in der zweiten Runde (Info 1) sind die Werte falsch. the output
Können Sie mir helfen?
Bitte schreiben Sie keine Ausgabe als Links und nicht Bilder von Text posten, aber den Text posten. –
Wie initialisieren Sie das Array (in einer Funktion) so: 'struct threadInfo info [];' *? –
Wenn ein Fehler auftritt, ist es immer hilfreich, das Nicht-Wesentliche aus Ihrem Code zu entfernen, bis Sie ein ["Kurzes, eigenständiges, korrektes (kompilierbares) Beispiel]" (http://sscce.org/) haben dass Sie (a) klarer sehen und verstehen können, was schief gelaufen ist (b) in der Lage sein, ein Programm mit anderen zu teilen, das sie leicht als Datei speichern, kompilieren und für sich selbst ausprobieren können, wenn Sie versuchen, Ihnen zu helfen. – ArjunShankar