nicht synchronisieren Ich habe ein Problem, wenn ich versuche, meine Threads zu synchronisieren. Ich habe den nächsten Code:Kann meine Threads in C
static void* CarProcess(void *str);
int main()
{
thread_t *pthreadsArray;
pthreadsArray = (thread_t*)malloc(sizeof(thread_t) * 10);
for (int i = 0; i < 10; i++)
{
int pthread = mythread_create(&pthreadsArray[i], NULL, CarProcess, i);
}
for (int i = 0; i < 10; i++)
{
mythread_join(pthreadsArray[i], NULL);
}
}
static void* CarProcess(void *str)
{
while(1){
printf("Thread ID: %i\n", str);
}
}
Wenn ich das Programm ausführen, ich habe diese Ausgabe:
Thread ID: 0
Thread ID: 0
Thread ID: 0
Thread ID: 0
...
aber nie erscheint "Thread ID: 1", "Thread ID: 2", „Thread ID: 3 ".... oder" Thread-ID: 9 ". Ich denke, dass es mit Mutex gelöst werden könnte, Mutex zu sperren und zu entschlüsseln. Hat irgendeine Körper Idee, wie man das löst? Danke
Unrelated auf Ihre Frage, aber ich nehme an, dass Ihr aktuelles Programm eine dynamische Anzahl von Threads hat? Andernfalls ist die Verwendung von 'malloc' einfach unnötig und Sie können einfach ein normales Array verwenden. –
Auch, was ist 'mythread_create' und' mythread_join'? –
danke @JoachimPileborg, aber es scheint, dass Sie nicht viel über Threads wissen .. Erstellen und Join sind Funktionen aus der Thread-Bibliothek .. –