본문 바로가기
linux

스레드 동기화 API

by 상레알 2009. 8. 9.
스레드는 하나의 프로세스에서 나위어진 것으로 데이터를 공유할 수 있다. 여러 개의 스레드가 전역 변수에 접근하는 경우에 문제가 발생할 수 있는데 이것을 임계영역 (Critical Section)으로 볼 수 있다. 여기에서는 뮤텍스(mutex)를 사용하여 데이터 동시 접근 문제를 해결한다. 뮤텍스를 지원하는 pthread의 함수를 알아보자


#include<pthread.h>

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
int pthread_mutex_destroy(pthread_mutex_t *mutex);

◇ pthread_mutex_init : 뮤텍스를 사용하기 전에 초기화 과정을 거치기 위한 함수 입니다. 첫 번째 인자에는 초기화하고자 하는 뮤텍스 포인터를 넘기고, 두 번째 잉ㄴ자에는 뮤텍스 속성(attribute)를 설정할 때 사용합니다. 속성을 사용하지 않을 때는 NULL 포인터를 넘깁니다.

◇ pthread_mutex_lock : 뮤텍스를 걸어 잠글 때(lock) 사용하는 함수입니다. 뮤텍스를 걸어 잠그면 후에 진입하는 스레드는 뮤텍스가 풀릴 때까지 대기하게 된다.

◇ pthread_mutex_unlock : 뮤텍스를 풀어줄 때 사용하는 함수 , 뮤텍스를 잠그면 반스시 풀어줘야 다른 스레드들이 진입할 수 있다.

◇ pthread_mutex_destroy : 더 이상 뮤텍스르 사용하지 않고 이와 관련된 리소를 해체할때 사용하는 함수



'linux' 카테고리의 다른 글

상대 ping 거부하기..  (0) 2010.04.02
echo  (0) 2010.03.18
러닝리눅스 [개정5판] - 한빛미디어  (0) 2009.11.09
Unix 와 Linux  (0) 2009.11.09
gcc 옵션  (0) 2009.08.14
rlogin  (0) 2009.08.12
쓰레드를 사용해보자...ㅋㅋ  (0) 2009.07.28
셸 프로그래밍  (0) 2009.07.24
gdb 디버깅  (0) 2009.05.05
iptable  (0) 2008.12.21