0
에 도달하기 전에 : pthread_join
에 도달 pthread_exit
main
전에가 pthread_exit()는이 코드 조각을 갖는 pthread_join을 호출
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
void* PrintHello(void* data){
printf("Hello from new thread\n");
pthread_exit(NULL);
}
int main(int argc, char* argv[]){
int rc;
pthread_t thread_id;
T_DATA data;
Data = init_data();
rc = pthread_create(&thread_id, NULL, PrintHello, (void*)data);
if(rc){
printf("\n ERROR: return code from pthread_create is %d \n", rc);
exit(1);
}
sleep(100);
printf("\n Created new thread (%d) ... \n", thread_id);
pthread_join(thread_id);
}
main
는 새로운 스레드를 만든 다음 sleep(100)
을 수행, 새로운 스레드가 아마 도달한다. 어쨌든 main
을 수행 할 때까지 새 스레드가 대기하고 그의 리소스가 해제되지 않으므로 ps
명령을 실행하면 다음 100 초 동안 새 스레드가 표시됩니다. pthread_detach
대신 pthread_join
을 사용하면 동일한 동작이 발생합니까? 새 스레드가 수행하기 전에 pthread_exit
을 수행 할 때 어떤 일이 발생하는지 궁금합니다. 스레드를 통해 pthread_detach
을 수행하십시오.
메인이'pthread_exit' 또는'pthread_detach'를 수행 할 때까지'ps'를 실행 한 후에 새로운 psth가 나타나기 시작하고 그 후에 ps 명령이 다시 나타나지 않을 것입니다. – MABC
ps는 스레드가 아닌 프로세스를 나타냅니다. –
@R .. 리눅스에서는'ps'도 쓰레드를 볼 수 있습니다. 'ps -H'. –