Я делаю программу, в которой у меня одновременно работают несколько потоков. После того, как я некоторое время возился с кодом, у меня возникла проблема, когда я отправлял строку (char *
) в поток для дальнейших операций, и почему-то строка вообще не отправлялась.
Позже , Я написал очень простой код, в котором я просто отправляю строку в поток, а функция выводит ее на консоль. Я обнаружил, что без использования pthread_join()
это вообще не сработает. Я понятия не имею, почему, потому что я знаю, что всякий раз, когда вызывается pthread_join()
, он блокирует каждый другой поток и ждет, пока он не завершится.
Вот простая программа:
void* prisntstr(void* string);
int main(int argc, char *argv[])
{
char* string = "Hello!";
pthread_t thread;
pthread_create(&thread, NULL, prisntstr, (void*)string);
pthread_join(thread, NULL);
}
void* prisntstr(void* string)
{
char* str = (char*)string;
printf("%s\n", str);
}
Кто-нибудь знает, как это сделать без использования pthread_join()
?