Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=pthread_mutex_init">pthread_mutex_init</a>(3)

1장. pthread_mutex_init(3)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제

뮤텍스(mutex)는 쓰레드가 공유하는 데이터 영역을 보호하기 위해서 사용되는 도구이다. pthread_mutex_init는 뮤텍스 객체를 초기화 시키기 위해서 사용한다.


1.1절. 사용법

#include <pthread.h>

int pthread_mutex_init(pthread_mutex_t * mutex, 
         const pthread_mutex_attr *attr);
		


1.2절. 설명

첫번째 인자인 mutex는 초기화 시킬 mutex객체이다. 초기화 시킬 때 뮤텍스의 특징을 정의할 수 있는데, 이는 두번째 인자인 attr를 통해서 이루어진다. 기본 뮤텍스 특징을 사용하길 원한다면 NULL을 이용하면 된다.

뮤텍스는 "fast", "recurisev", "error checking"의 3가지 종류중 하나를 선택할 수 있으며, 기본적으로 "fast"가 사용된다.


1.3절. 반환값

성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno 값을 설정한다.


1.4절. 에러

EINVAL

뮤텍스가 제대로 초기화 되지 않았다.

EDEADLK

뮤텍스가 이미 잠겨있다.("error checking" 뮤텍스의 경우에만 발생)


1.5절. 예제

#include <pthread.h>

pthread_mutex_t mutex_lock;
...

void *t_function(void *data)
{
    pthread_mutex_lock(&mutex_lock);
    // critical section
    pthread_mutex_unlock(&mutex_lock);
}

int main()
{
    pthread_t p_thread;
    int state;
    int a;

    pthread_mutex_init(&mutex_lock, NULL);
    pthread_create(&p_thread, NULL, t_function, (void *)&a);
    ...
    pthread_join(&pthread, (void **)&status);
}
		

관련 글