스레드란?
 
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 옵션을 줘서 컴파일 하면 해결
 
 
< 출처 >
http://hydra01.egloos.com/page/4

+ Recent posts