본문 바로가기

개발 언어/C 언어/리눅스 C

pthread 정리 및 자료조사

* joinc wiki - Pthread 문서 모음

http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Thread

 



스레드 기본


fork는 자체적인 변수와 PID를 가지는 프로세스의 새로운 사본 생성

이것을 생성한 프로세스와 완전히 독립적으로 실행

 

스레드는 자체적인 스택과 지역 변수를 가지지만,

전역 변수, 파일 기술자, 시그널 핸들러와 현재 디렉토리 상태를 스레드 생성자인 프로세스와 공유

 

새로운 스레드를 생성하는 것의 오버헤드는 새로운 프로세스를 생성하는 것의 오버헤드보다 상당히 적다

 

 





동기화



1. 세마포어

2. 뮤텍스


하나의 쓰레드만 오브젝트를 사용할 수 있도록 잠그고 푼다


성공시 0을 반환, 실패의 경우 에러 코드가 반환되지만, errno는 설정되지 않음




스레드 속성



1. 분리모드

 쓰레드를 메인쓰레드에서 분리 시킨다. 이것은 자식 쓰레드가 종료되는 즉시 쓰레드의 모든 자원을 되돌려 줄 것을 보증한다.

detach 상태가 아닐경우 쓰레드가 종료한다고 하더라도 pthread_join을 호출하지 않는 한 자원을 되돌려주지 않는다.


함수로는 pthread_detach(), 또는 pthread_attr에 detachstate 를 지정하여 detach 상태로 생성할 수 있다.


쓰레드가 detach  상태로 되었다면 해당 쓰레드에 대한 pthread_join() 호출은 실패한다.







쓰레드 취소하기


 옵션에는 on/off 하는 PTHREAD_CANCEL_ENABLE, PTHREAD_CANCEL_DISABLE 가 있다

 PTHREAD_CANCEL_ASYNCHRONOUS: 취소요청을 즉시 받아 들임

 PTHREAD_CANCEL_DEFERRED : pthread_join, pthread_cond_wait, pthread_cond_timedwait, sem_wait, sigwait의  

                                                              하나를 실행할 때까지 취소 요청 지연








* detected 상세


'개발 언어 > C 언어/리눅스 C' 카테고리의 다른 글

데몬 만들기  (0) 2012.08.21
시그널 처리방법  (0) 2012.08.21
[읽기] gnu 메뉴얼  (0) 2012.06.28
파일서술자 닫기 : close , shutdown  (0) 2012.06.22
2진수 출력하기  (0) 2012.06.11