Я пытаюсь выучить Unix C и делаю упражнения для практики.Текущая проблема, над которой я работаю, связана с потоками POSIX (главным образом, pthread_create () и pthread_join ())
. В этой задаче многократно печатается «Hello World» с использованием двух потоков.Одна нить печатает «Hello» 1000 раз, а вторая - «World» 1000 раз.Основная программа / поток состоит в том, чтобы дождаться завершения двух потоков, прежде чем продолжить.
Вот то, что у меня есть сейчас.
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <pthread.h>
void *print_hello(void *arg)
{
int iCount;
for(iCount = 0; iCount < 1000; iCount++)
{
printf("Hello\n");
}
}
void *print_world(void *arg)
{
int iCount;
for(iCount = 0; iCount < 1000; iCount++)
{
printf("World\n");
}
}
int main(void)
{
/* int status; */
pthread_t thread1;
pthread_t thread2;
pthread_create(&thread1, NULL, print_hello, (void*)0);
pthread_create(&thread2, NULL, print_world, (void*)0);
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
return 0;
}
Это, кажется, не работает полностью.Он печатает «Привет», как и ожидалось.Но «Мир» вообще не печатается.Похоже, второй поток не работает вообще.Не уверен, что я правильно использую pthread_join.Мое намерение состоит в том, чтобы основной поток «ожидал» этих двух потоков, как требует упражнение.
Буду признателен за любую помощь.