pthread mutex 예제

뮤텍스가 끝나면 pthread_mutex_destroy (&m)라고도 부릅니다. 잠금 해제된 뮤텍스만 파괴할 수 있습니다. 소멸된 잠금에서 destroy를 호출하고, 초기화된 잠금을 초기화하고, 이미 잠긴 잠금을 잠그고, 잠금 해제 잠금 등의 잠금해제는 지원되지 않으며(적어도 기본 뮤텍스의 경우) 일반적으로 정의되지 않은 동작이 발생합니다. pthread_mutex_trylock() 함수는 pthread_mutex_lock()과 동일해야 하며, 뮤텍스에서 참조하는 뮤텍스 개체가 현재 잠겨 있는 경우(현재 스레드를 포함한 모든 스레드에 의해) 호출이 즉시 반환됩니다. 뮤텍스 형식이 PTHREAD_MUTEX_RECURSIVE이고 뮤텍스가 현재 호출 스레드에 의해 소유된 경우 뮤텍스 잠금 수는 1로 증가해야 하며 pthread_mutex_trylock() 함수는 즉시 성공을 반환합니다. 뮤텍스는 공유 리소스를 사용하기 전에 설정한 잠금이며 사용 후 릴리스됩니다. 잠금이 설정되면 다른 스레드가 잠긴 코드 영역에 액세스할 수 없습니다. 따라서 스레드 1이 공유 리소스에 액세스하지 않고 코드가 mutexes를 사용하여 스레드 1에 의해 잠겨있는 동안 스레드 2가 예약된 경우에도 스레드 2는 해당 코드 영역에 액세스 할 수 없습니다. 이렇게 하면 코드에서 공유 리소스의 동기화된 액세스가 보장됩니다. 예.

전역(`정적`) 변수에대해서만 매크로 PTHREAD_MUTEX_INITIALIZER를 사용할 수 있습니다. m = PTHREAD_MUTEX_INITIALIZER는 보다 일반적인 용도의 pthread_mutex_init(&m, NULL)과 동일합니다. Init 버전에는 추가 오류 검사 및 고급 공유 옵션에 대한 성능을 거래하는 옵션이 포함되어 있습니다. “도움말 – 뮤텍스가 필요해!” 한 스레드가 현재 임계 섹션 내에 있는 경우 첫 번째 스레드가 완료될 때까지 다른 스레드를 기다려야 합니다. 이를 위해 뮤텍스(상호 배제의 약자)를 사용할 수 있습니다. 신호가 뮤텍스를 기다리는 스레드로 전달되면 신호 처리기에서 돌아오면 스레드가 중단되지 않은 것처럼 뮤텍스를 다시 기다려야 합니다. 뮤텍스를 다시 잠금하려고 할 때의 동작이 정의됩니다. 이것이 끔찍한 예라고 말하는 모든 사람들에게, 당신은 이것이 정말로 무엇을 생각했는지 를 볼 수 없습니다. 그는 이것이 멀티 스레드로 추정되는 곳이라고 말하지 않았습니다. 그것은 내가 단일 차선 다리 문제를 해결하는 데 도움이.

중요한 섹션이 없는 여러 스레드(또는 다중 스레드)에서 이 문제를 수행해 보십시오.

カテゴリー未分類