Я изучаю темы и параллельное программирование. Пробовал этот базовый пример из того, что было предоставлено в классе:Не понимаю это поведение основных потоков
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 8
void *printGoGators(void *noArg)
{
printf("Go Gators!\n");
return NULL;
}
int main(int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc, t;
for (t = 0; t < NUM_THREADS; t++)
{
printf("Creating thread %d\n", t);
rc = pthread_create(&threads[t],
NULL,
printGoGators,
NULL);
if(rc)
{
printf("ERROR %d", rc);
exit(-1);
}
}
pthread_exit(NULL);
}
Этот код производит следующий вывод. :
Creating thread 0
Creating thread 1
Go Gators!
Creating thread 2
Go Gators!
Creating thread 3
Go Gators!
Creating thread 4
Go Gators!
Creating thread 5
Go Gators!
Creating thread 6
Go Gators!
Creating thread 7
Go Gators!
Go Gators!
Почему Go Gators!
не печатается непосредственно после его соответствующего Creating thread #
для всех потоков? Пожалуйста, помогите!
потому что ваши потоки независимы друг от друга и из основного потока, который их создает. Таким образом, после инициализации вы не можете контролировать, какой поток будет печатать первым. – HazemGomaa
Таким образом, этот вопрос считается слишком широким для stackoverflow. Я не вижу, чтобы кто-нибудь предлагал разные ответы. –
Это действительно сложно понять ваш вопрос. Вы спрашиваете, почему что-то не происходит без объяснения причин, по которым вы думаете. Вы видите поведение, которого вы должны ожидать. Если вы ожидаете иначе, скажите, почему мы можем объяснить ошибку в ваших рассуждениях. –