리눅스 서버에 대해서
리눅스 쓰레드
중년 플머 김씨
2008. 6. 19. 20:08
스레드란?
1. 경량화 된 프로세스
- 프로세스와 마찬가지로 동시 실행이 가능하다.
- 프로세스의 단점을 극복하기 위해 등장.
2. 프로세스와의 차이점
- 스택을 제외한 나머지 메모리 영역을 공유
- 보다 간단한 컨텍스트 스위칭
- 일부 메모리를 공유하므로 스레드간 통신이 편리
쓰레드 생성
int pthread_create(pthread_t * thread, pthread_attr_t * attr, void*(*start_routine)(void *), void * arg);
thread : 쓰레드 ID 할당
attr : 쓰레드 특성 설정, 기본 NULL
start_routine : 실행할 함수 적음
arg : 함수로 전달하는 인자 값
int pthread_join(pthread_t th, void **thread_return);
th : th인자에 들어오는 ID 쓰레드가 종료할때 까지 실행 지연
thread_return : 쓰레드 종료시 반환되는 2차 포인터
쓰는 이유
1. 임계 영역
- 두 개 이상의 스레드의 의해서 동시에 실행되면 안 되는 영역
2. 스레드 안전한 함수 ( Thread safe function )
- 임계 영역에서 호출이 가능한 함수
- 컴파일시 -D_REENTRANT 옵션을 줘서 컴파일 하면 해결
< 출처 >