Thread
Single Thread Process: Thread 하나만 가짐
Multi Thread Process: Thread 둘 이상 가짐
Thread in Memory
PC를 독립적으로 가지는 이유:
Multi Threading에서 여러 Thread가 하나의 Process내에서 동시에 실행될 때, 각 Thread는 다른 코드 실행 흐름을 가질 수 있다.
그래서 각 Thread가 자신의 PC를 독립적으로 관리함으로써, 동시에 다른 명령어를 실행할 수 있고, 다른 코드 경로를 따라갈 수 있다.
만약 PC를 공유하면 모든 Thread가 동시에 같은 명령어를 수행하게 되어 Thread들은 독립적으로 수행하지 못한다.
Paralleism
Model
One-to-One
Many-to-One
Many to Many
Pthread
#include<pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
thread를 만들 때 사용하는 함수
첫 번째 인자: Thread의 ID를 저장할 변수이다.
두 번째 인자: Thread의 특성을 설정할 때 사용하는데, 보통NULL을 쓴다.
세 번째 인자: Thread생성 후 실행되는 함수이다.
네 번째 인자: Thread가 실행할 함수에 전달되는 파라미터다.
int pthread_detach(pthread_t thread);
thread를 main thread와 분리시키는 함수
main thread에서 join하지 않아도 해당 thread가 종료되면 즉시 리소스를 free한다.
첫 번째 인자: main thread에서 분리시킬 thread이다.
void pthread_exit(void *retval);
첫 번째 인자: Thread의 종료 값이다.
int pthread_join(pthread_t thread, void **retval);
thread가 반환될 때까지 기다리는 함수
첫 번째 인자: 반환될 Thread이다.
두 번째 인자: 대상 스레드의 종료 상태가 저장될 위치를 가리킨다.
exec()
fork()