목적

: pthread 로 멀티 스레드 간의 sync 를 맞추고 timeout 을 주어 자식 thread 가 종료되지 않았을 경우 timeout 전까지 기다린 후 진행한다.


사전 지식

- Process 와 Thread 의 차이

: 프로세스는 운영체제로 부터 주소공간, 메모리, 파일등을 할당 받으며, 리눅스 시스템에서는 코드영역과 라이브러리는 프로세스간 공유하게 된다.

: 스레드란 한 프로세스 내에서 동작되는 흐름으로 하나의 프로세스당 하나의 스레드가 존재하는데 이를 메인스레드라고 부르고, 여러개의 스레드가 하나의 프로세스 내에 있을 경우 멀티 스레드가 된다.


프로세스(Process)

- 자신만의 고유공간(주소공간, 메모리 etc)을 할당 받음

- 다른 프로세스와 의 통신 구현이 쉽지 않음

스레드(Thread) 

- 다른 스레드와 공간과 자원을 공유(시스템 자원 절약)

- 메모리를 공유하기 때문에 전역변수를 활용하여 스레드간 통신이 용이


- Ptread 함수

pthread_mutex_trylock - Lock 시도 시에 다른 스레드에 이미 Lock 이 되어 있을 경우 대기 하지 않고 return 되는 함수

int nRet = pthread_mutex_trylock(&m_mutex);

if (nRet == EBUSY) {

        return true;

} else if (nRet == EINVAL) {

        PMUTEX_TRACE_ERROR("Failed to try lock mutex: %s\n", strerror(nRet));

} else {

        pthread_mutex_unlock(&m_mutex);

}


TEST CODE


그외 Tip

- pthread 를 gcc 로 compile 하기 위해서는 -lpthread 옵션을 주어야 한다.

: ex - gcc -o test test.cpp -lpthread

- clock_gettime 을 gcc 로 complie 하기 위해서는 -lrt 옵션을 주어야 한다.

설정

트랙백

댓글