Печать в одиночном Pthread

Я пытаюсь реализовать что-то программу с Pthreads в C. Теперь, я пытаюсь позволить одному streamу печатать что-то:

void * generator(void *arguments){ printf("Hi"); return NULL; } int main(int argc, const char* argv[]){ pthread_create(&threads_ids[0], NULL, &generator, NULL);= } 

Это не работает и ничего не печатает. Однако, когда я помещал создание pthread в цикл for, он печатает «Hi», но при каждом выполнении событие отличается.

Это нормальное поведение, и если да; как я могу это исправить? Заранее спасибо!

Это связано с тем, что ваш основной stream возвращается и, таким образом, выходит из процесса. Это означает, что нить, которую вы создали, никогда не получит шанс на запуск.

В отличие от возврата из main (), вызов pthread_exit(0) из main () приведет к продолжению выполнения другого streamа.

Кроме того, вы можете дождаться завершения выполнения streamа, вызвав pthread_join() в созданном вами streamе.

Когда вы выполняете в цикле, возможно, некоторые из создаваемых вами streamов будут выполнены до выхода основного streamа, и, таким образом, он «работает» (печатает некоторые Hi ). Но у него есть такая же проблема, как и код, который вы опубликовали.