linux mutex 예제

linux mutex 예제

Uncategorized -

@engeland: 전역 변수를 사용하는 것이 잘못된 이유는 무엇입니까? 프로그래머가 나쁜 관행이라고 해서 뮤텍스로 보호할 수 있는 리소스의 나쁜 예가 아니라는 의미는 아닙니다. 히만슈가 정적 변수를 사용해야 하는가? 그는 할 수 있지만 다음 초보자에게 더 이해할 수있는 코드가 될 것인가? 아니요. 그리고 이것이 예제의 핵심입니다. 가능한 한 간단하게 만드십시오. 다른 한편으로는 전역 변수가 잘못된 프로그래밍 습관이라고 언급되었을 수도 있습니다. @chmurli: 전역 변수와 동일하면 단일 스레드 코드에 대한 주석이 표시됩니다. 이것은 뮤텍스 동기화의 총 단순화입니다. 전체 코드는 중요한 섹션의 일부이므로 보호됩니다. 이 경우는 물론 직렬로 작동합니다. pthread_mutex_lock 전에 또는 pthread_mutex_unlock 후 아무것도 추가하면 좋은 멀티 스레드 프로그램이 있습니다. @Himansu:이 좋은 예주셔서 감사합니다. 뮤텍스 유형이 PTHREAD_MUTEX_RECURSIVE인 경우 뮤텍스는 잠금 수의 개념을 유지합니다. 스레드가 처음으로 뮤텍스를 성공적으로 획득하면 잠금 수가 1로 설정됩니다.

스레드가 이 뮤텍스를 다시 사용할 때마다 잠금 수는 하나씩 증가합니다. 스레드가 뮤텍스의 잠금을 해제할 때마다 잠금 수는 하나씩 감소됩니다. 잠금 수가 0에 도달하면 뮤텍스는 다른 스레드가 획득할 수 있게 됩니다. 스레드가 잠기지 않은 뮤텍스 또는 잠금이 해제된 뮤텍스의 잠금을 해제하려고 하면 오류가 반환됩니다. 화장실(공유 리소스)을 방문하기 위해 대기하는 사람(스레드)의 경우 뮤텍스가 무엇인지 에 대한 생생한 설명입니다. 한 사람 (스레드)가 그 / 자신을 완화 화장실을 사용하는 동안 (비 const 비 원자 성 작업), 그 / 그녀는 문이 잠겨 있는지 확인해야합니다 (뮤텍스), 그렇지 않으면 그것은 전체 몬티 (원치 않는 행동)에 잡힐 로 이어질 수 있습니다 일단 우리는 뮤텍스와 함께 완료됩니다 우리는 또한 pthread_mutex_destroy(&m)를 호출해야 합니다. 잠금 해제된 뮤텍스만 파괴할 수 있습니다. 소멸된 잠금에서 destroy를 호출하고, 초기화된 잠금을 초기화하고, 이미 잠긴 잠금을 잠그고, 잠금 해제 잠금 등의 잠금해제는 지원되지 않으며(적어도 기본 뮤텍스의 경우) 일반적으로 정의되지 않은 동작이 발생합니다. @chmurli이 기사에서는 mutex를 사용하는 스레드 동기화에 대해 설명하므로 뮤텍스를 사용하는 방법에 대한 작은 예제를 제공했습니다.