У меня проблема, когда я пытаюсь синхронизировать свои потоки. У меня есть следующий код:Не удается синхронизировать мои потоки в 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);
}
}
Когда я выполнить программу, у меня есть этот выход:
Thread ID: 0
Thread ID: 0
Thread ID: 0
Thread ID: 0
...
Но никогда не появится "Thread ID: 1", "Thread ID: 2", «Thread ID: 3 ".... или" ID темы: 9 ". Я думаю, что это можно решить с помощью Mutex, блокировки и разблокировки Mutex. Есть ли у любого органа идея, как это решить? Спасибо
неродственных на ваш вопрос, но я предполагаю, что ваша фактическая программа имеет динамическое количество потоков? В противном случае использование 'malloc' просто не нужно, и вы можете просто использовать обычный массив. –
Кроме того, что такое 'mythread_create' и' mythread_join'? –
спасибо @JoachimPileborg, но кажется, что вы мало что знаете о потоках. Create and Join - это функции из библиотеки потоков. –