개발/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가 생기는 차이.