Я написал следующий код с использованием библиотеки pthread POSIX:
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
pthread_t pid1,pid2;
void *test(void *arg)
{
void **end;
printf("\nNew Thread ID: 0x%x\n",(unsigned int)pid2);
pthread_join(pid1,end);
printf("\nNew Thread going to go off\n");
printf("\nNew Thread ID: 0x%x\n",(unsigned int)pid2);
return ((void *)NULL);
}
int main()
{
pid1 = pthread_self();
pthread_create(&pid2,NULL,test,NULL);
printf("\nMain Thread ID: 0x%x\n",(unsigned int)pid1);
sleep(2);
printf("\nI am going off\n");
pthread_exit(0);
}
При выполнении кода я получил следующий вывод:
Main Thread ID: 0xb7880b30
New Thread ID: 0xb787eb70
I am going off
Segmentation fault
Как я изучал, поток (pid2) вызов pthread_join будет блокироваться до тех пор, пока поток, переданный в аргументе (pid1), не вызовет pthread_exit ().И pthread_exit () используется, чтобы остановить выполнение определенного потока, позволяя всем другим продолжать выполнение.
Я хочу знать, почему я наконец-то получил ошибку сегментации.
Пожалуйста, объясните мне правильно.