Thread
개요
관련 함수들
- Thread 생성 함수:
pthread_create()
- 자신의 tid를 알려주는 함수
pthread_self()
- 자신의 Thread를 종료하는 함수:
pthread_exit()
- 다른 Thread 종료시키는 함수:
pthread_cancle()
- 다른 Thread 의 종료를 기다리고 reap하는 함수:
pthread_join()
- Thread에 signale을 보내는 함수:
pthread_kill()
Thread 종류 (joinable)
- Joinable thread (default)
- 다른 쓰레드가 reap할 수 있고, 다른 쓰레드에 의해 reap 될 수 있다.
- 다른 쓰레드가 reap하기 전까지는 메모리가 해제되지 않는다.
- detached thread
- 다른 쓰레드가 reap이나 종료할 수 없다.
- 쓰레드 종료시 자동적으로 메모리가 해제된다.
int pthread_detach(pthread_t thread)
로 detach할 수 있다.
Thread Synchronization
개요
- 쓰레드간에 전역변수를 공유하기 때문에 전역변수에 동시에 접근할 경우 충돌이 발생할 수 있다.
- Critical section
- 공유되는 메모리에 접근하는 코드를 명칭
- 같은 메모리를 두고 경합하는 critical section은 반드시 여러 쓰레드에서 동시에 실행되지 않게 해야 한다.
- Mutual exclusion
- Critical section에 대한 독점권을 부여하는 것
- 어떤 쓰레드가 critical section에 진입했을 때, 동일한 자원에 대한 critical section에 다른 쓰레드의 접근을 막아주는 것