개발/C

[C] pthread_create, pthread_join, pthread_exit, fork

yeonlee 2023. 1. 13. 09:49

pthread_create

#include <pthread.h>

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine), void *arg);

새 쓰레드를 만드는 함수.

쓰레드 ID, 쓰레드 attribute, 쓰레드 시작함수, 쓰레드 시작함수의 argument가 들어간다.

output으로 정상작동시 0, 비정상작동시 -1을 반환한다.

 

exit(num) 시 process가 종료되고 num을 반환한다.

main thread 가 죽을경우 같이 죽는다. 하지만 pthread_exit을 하면 종속성에서 벗어날 수 있다.

child thread 가 일 하기 전에 main thread 가 죽는걸 방지하고 싶다면 pthread_join으로 main thread를 기다리게 하면 된다.

 

 

 

pthread_join

자식 thread의 종료를 기다리는 것

 

pthread_exit

자식 thread의 생명주기를 main과 분리시키는 것.

 

fork

#include <sys/types.h>
#include <unistd.h>

pid_t fork(void);

자식 process를 만드는 것

thread는 동일 process내에서 stack 부분만 할당받아서 새로운 작업을 시행하며 heap, data, code 부분은 공유하지만

process는 cpu에서 메모리자원을 통채로 받아와 새로운 stack,heap, data, code가 생기는 차이.