스레드란?
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 옵션을 줘서 컴파일 하면 해결
< 출처 >
'리눅스 서버에 대해서' 카테고리의 다른 글
ccacheを使って共同作業のビルド時間を改善する (0) | 2011.05.12 |
---|---|
게임 서버 epoll 사용한것... 소스 (0) | 2008.11.18 |
리눅스에서 스레드 프로그램 컴파일시 옵션 (0) | 2008.06.19 |
리눅스에서 cpp파일로 컴파일할 때 주의점. (0) | 2008.05.27 |
Epoll 채팅 서버 소스 (0) | 2008.05.25 |