mutex pthread 예제

수준/필수 구성 조건: 이 자습서는 pthreads와 병렬 프로그래밍을 새로 접하는 사람들에게 이상적입니다. C에서 병렬 프로그래밍에 대한 기본적인 이해가 필요합니다. 일반적으로 병렬 프로그래밍에 익숙하지 않은 경우 EC3500: 병렬 컴퓨팅 소개에 포함된 자료가 도움이 될 것입니다. @engeland « 글로벌 변수는 mutexes에 의해 보호되어야하는 제한된 자원에 대한 나쁜 예입니다 » 당신은 당신의 문을 정당화하시기 바랍니다 수 있습니까? 나는 모든 의미에서 chmurli에 동의해야합니다! 이런 식으로 스레드에 대한 코드를 작성하는 것은 실패일 뿐입니다. 전역 변수는 mutexes에 의해 보호되어야 하는 제한된 리소스에 대한 나쁜 예입니다. 적어도 당신의 선택에 코멘트, 그래서 초보자는 생산 코드에서 이러한 코드를 작성 하는 유혹 하지 않습니다. 전역 변수의 복사본을 스레드 로컬 변수로 보호하는 경우 약간 (여전히 좋지 않은) 더 나은 예가 되었을 것입니다. 나는이 예제를 읽은 후 스레드, Mutexes에 완전히 새로운, 나는 MUTEX의 기본 및 사용 사례를 얻었다. 이 지식으로, 나는 다른 Mutex 응용 프로그램을 이해할 수 있다고 생각합니다. pthread_mutex_lock(뮤텍스): 뮤텍스가 잠금 해제되면 이 함수는 pthread_mutex_unlock(mutex)이 호출되고 반환될 때까지 뮤텍스를 잠급니다.

그렇지 않으면 잠금이 해제될 때까지 차단됩니다. @chmurli이 기사에서는 mutex를 사용하는 스레드 동기화에 대해 설명하므로 뮤텍스를 사용하는 방법에 대한 작은 예제를 제공했습니다. 나는 코드의 중요한 섹션에서 mutex를 사용했으며 이것이 잘못되었다고 생각하지 않습니다. 이것이 끔찍한 예라고 말하는 모든 사람들에게, 당신은 이것이 정말로 무엇을 생각했는지 를 볼 수 없습니다. 그는 이것이 멀티 스레드로 추정되는 곳이라고 말하지 않았습니다. 그것은 내가 단일 차선 다리 문제를 해결하는 데 도움이. 중요한 섹션이 없는 여러 스레드(또는 다중 스레드)에서 이 문제를 수행해 보십시오. 내가해야 할 일과이 사람의 유일한 차이점은 스레드, 다른 함수의 한 가지 추가 배열이며 카운터 대신 char *를 사용했습니다. 뮤텍스가 끝나면 pthread_mutex_destroy (&m)라고도 부릅니다. 잠금 해제된 뮤텍스만 파괴할 수 있습니다.

소멸된 잠금에서 destroy를 호출하고, 초기화된 잠금을 초기화하고, 이미 잠긴 잠금을 잠그고, 잠금 해제 잠금 등의 잠금해제는 지원되지 않으며(적어도 기본 뮤텍스의 경우) 일반적으로 정의되지 않은 동작이 발생합니다.