세마포어 뮤텍스 예제

    세마포는 신호 메커니즘입니다 („나는 끝났어, 당신은 신호의 종류를 수행 할 수 있습니다“). 예를 들어 모바일에서 노래를 듣는 동시에 친구가 전화를 걸 때 인터럽트 서비스 루틴(ISR)이 호출 처리 작업을 깨우는 신호가 트리거됩니다. 세마포어: 다른 스레드가 깨어나라고 말할 때까지 잠을 자고 싶을 때 세마포를 사용하십시오. 세마포 `다운`은 하나의 스레드 (생산자)에서 발생하고 세마포 `최대`(동일한 세마포의 경우)는 다른 스레드 (소비자)에서 발생합니다. 버퍼 슬롯이 비어 있습니다. Java 다중 스레드 예제에서는 Semaphore 및 Mutex를 사용하여 리소스에 액세스하는 스레드 수를 제한하는 방법을 보여 주습니다. 1. 당신은 당신의 문서에이것을 작성했습니다, „세마포는 자체적으로 여러 동일한 자원 문제를 해결할 수 없습니다. 방문자는 그가 아직 욕실이 무료가 아닌 열쇠를 가지고 있다는 것을 알고 있습니다.

    이와 같은 세마포를 사용하려고 하면 항상 다른 상태 정보(일반적으로 별도의 뮤텍스를 통해 보호되는 공유 리소스)가 필요하다는 것을 알게 될 것입니다. 뮤텍스는 자원의 순차적 접근을 보장하고 세마포는 자원의 가용성을 보장합니다. 내가 맞지? 내가 틀렸다면 정교하십시오. 코드 스니펫이 도움이 되는 것이 좋습니다. 둘째, 모든 최근 프레임 워크 (예를 들어.NET) 기본 두 문제를 처리 하는 세마포의 포괄적인 버전을 소개 합니다. 이진 세마포어 = 그것은 신호 메커니즘의 더 많은, 원하는 경우 다른 높은 우선 순위 스레드는 신호와 잠금을 취할 수 있습니다. Mutex = 소유권 잠금 메커니즘이며 잠금을 획득한 스레드만 잠금을 해제할 수 있습니다. 뮤텍스는 액세스 수가 1인 세마포입니다.

    은행에서 사물함을 사용하는 상황을 고려하십시오. 일반적으로 규칙은 한 사람만 탈의실에 들어갈 수 있다는 것입니다. 즉, 뮤텍스 = 상호 배타적 세마포어 1. 사실, 운영 체제의 많은 „교과서“는 mutex (또는 실시간)라는 용어를 정의하지 못합니다. 그러나 트롤텍의 Qt 임베디드 4.4 참조 문서의 QSemaphore 페이지에서 일반적인 스니펫을 고려하십시오: „세마포는 뮤텍스의 일반화입니다.