Я пытаюсь дождаться завершения всех потоков до завершения процесса main(). Вот что у меня есть до сих пор:
void* mapperFunction()
{
printf("Hello\n");
return NULL;
}
int main()
{
int i; // Used in "for" loops.
int N = 3;
pthread_t* mapperThreads = (pthread_t*) malloc(sizeof(pthread_t) * N);
for ( i = 0; i < N; i++)
{ // Creates all the mapper threads.
pthread_create( &mapperThreads[N], NULL, mapperFunction, NULL);
}
for ( i = 0; i < N; i++)
{ // Waits for all the mapper threads to terminate.
pthread_join( mapperThreads[N],NULL);
}
return 0;
}
Когда я запускаю этот код, я получаю три разных результата;
1- Привет\n
2- Хелле\nЗдравствуйте\n
3- Привет\nПривет\nПривет\n
Похоже, что процесс main() не всегда ожидает завершения всех потоков. Что я делаю не так?