스레드
- 프로세스를 구성하는 실행 흐름의 단위
- 각기 다른 스레드 ID, 프로그램 카운터, 레지스터, 스택
세 개의 별도 프로세스 vs 스레드 세 개
- 메모리: 여러 프로세스로 병행 실행 - 멀티 프로세스
- 메모리: 여러 스레드로 병행 실행 - 프로세스 같은 영역 실행 3개
- 가장 주된 차이점은 자원 공유 여부
- 프로세스 간에는 기본적으로 자원을 공유하지 않음
- 스레드 간에는 프로세스의 자원을 공유
프로세스 간에도 자원 공유 가능하다
- 프로세스간 통신(IPC: Inter-Process Communication)
- 공유 메모리를 통한 통신
- 파이프를 통한 통신
- 네트워크 소켓을 통한 통신
스레드 생성
int pthread_create(Pthread_t *thread, const pthead_attr_t *attr, void *(*start_routine) (void *), void *arg);
- Parameter
- thread:스레드 ID가 저장될 곳
- attr:스레드 속성(NULL일 경우 기본 속성으로 초기화)
- start_routine:스레드가 실행할 대상
- arg:스레드 실행시 사용할 인자
- Pthread_attr_t 구조체
- pthread_attr_init()-스레드 속성 초기화
- pthread_attr_destroy()-스레드 속성 폐기 스택크기, 스케줄링 인자, 최초 detach 상태 등 대부분 NULL로 지정
- Return
스레드 조인:스레드 실행이 종료될 때까지 대기(스레드 종료 처리)
int pthread_join(pthread_t thread, void **retval);
- Parameter
- thread:기다릴 스레드 ID
- retval:스레드의 종료 상태(exit status) 저장
- Return
스레드 떼어내기:종료 시 자동으로 자원 해제
int pthread_detach(pthread_t thread);
- Parameter
- Return
- detach된 스레드는 말 그대로 떨어져있는 실행 단위 실행이 끝난 시간 or 보장이 필요하다.
스레드 종료
void pthread_exit(void *retval);
- Parameter
- retval:스레드의 종료 상태(exit status) 저장
- Return