Archive for the ‘ System Programming ’ Category

pthread_join

pthread_join 는 실별번호 th 로 시작된 쓰레드가 종료되는걸 기다린다. 이러헌 쓰레드의 종료는 pthread_exit(3)로 종료되거나 혹은 리턴되는 경우 발생한다.

만약 thread_return값이 NULL 이 아니라면, th의 리턴값이 저장된 영역이 전달되게 된다.

th 식별번호를 가지는 쓰레드가 join 되기 위해서는 반드시 joinable 상태의 쓰레드로 작동하고 있어야지만 한다. 만약 기다리는 쓰레드가 pthread_detach(3) 함수를 통해서 detached 상태가 되었거나 혹은 pthread_create(3)로 실행될때 PTHREAD_CREATE_DETACHED 특성으로 실행되었다면 join 으로 기다릴수 없게 된다.

joinable 쓰레드가 종료되면, 종료된다고 하더라도 즉시 메모리 자원등이 해제 되지 않는다. pthread_join 함수를 만나야지만 자원이 해제된다. 그럼으로 모든 joinable 쓰레드에 대해서는 반드시 pthread_join 을 호출해주어야 한다. 그렇지 않을경우 메모리 누수가 발생할것이다.

 

http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3/pthread_join?cx=002661009167463862046%3A8oq6cxlfibu&cof=FORID%3A9&q=pthread_join&sa=Search&ie=EUC-KR#969

System Call

fork :

호출 프로세스와 똑같은 새로운 프로세스를 하나 생성한다. fork는 가장 기본적인 프로세스 생성 프리미티브이다.

exec :

한 집단의 라이브러리 루틴과 하나의 시스템 호출로, 각각은 동일한 기능 즉, 한 프로세스의 기억공간을 새로운 프로그램으로 대치시킴으로써 프로세스를 변환시키는 기능을 수행한다. exec 호출들 각각의 차이는 그들의 인수 리스트가 어떤 방법으로 작성되는가에 있다.

wait :

이 호출은 초보적인 프로세스 동기화(synchronization)를 제공한다. 한 프로세스로 하여금 연관된 다른 프로세스가 끝날 때까지 기다릴 수 있게 한다.

exit :

프로세스를 종료할 때 사용된다.