OMOSMutex 클래스

팩토리의 createOMOSMutex 메소드는 상호 배타를 나타내는 뮤텍스를 작성합니다. 뮤텍스는 스레드 내에서 임계 섹션을 보호하는 데 사용되는 기본 동기화 메커니즘입니다. 뮤텍스는 보호된 오브젝트를 구현하는 데 사용됩니다.

뮤텍스는 하나의 스레드가 자원에 상호 배타적으로 액세스하도록 허용합니다. 뮤텍스는 한 번에 하나의 스레드만 데이터 또는 제어된 다른 일부 자원을 수정하도록 허용된 경우 유용합니다. 예를 들어 링크된 목록에 노드를 추가하는 것은 한 번에 하나의 스레드에만 허용되어야 하는 프로세스입니다. 뮤텍스를 사용하여 링크된 목록을 제어하면 한 번에 하나의 스레드만 목록에 액세스할 수 있습니다.

IBM® Rational® Rhapsody®에서 뮤텍스는 반복 잠금 뮤텍스로 구현됩니다. 즉, 동일한 스레드가 자신을 차단하지 않고 뮤텍스를 여러 번 잠글 수 있습니다. 다시 말해 뮤텍스는 실제로 계산된 세마포어입니다. 대상 환경에 대해 OMOSMutex를 구현하는 경우 반복 잠금 뮤텍스로 구현해야 합니다.

뮤텍스는 해제하거나 잠글 수 있으며 처음에는 해제되어 있습니다. 태스크가 lock 오퍼레이션을 실행하고 뮤텍스가 잠겨 있다는 사실을 감지한 경우 해당 태스크는 대기해야 합니다. 해당 태스크는 차단된 다른 태스크와 함께 뮤텍스와 연관된 큐에 대기되고 CPU 스케줄러가 실행할 다른 태스크를 선택합니다. lock 오퍼레이션이 뮤텍스가 해제되어 있음을 감지하면 해당 태스크는 뮤텍스를 잠그고 임계 섹션에 진입합니다. 임의의 태스크에서 free를 호출하여 뮤텍스를 릴리스하면 대기 중인 큐에 있는 차단된 첫 번째 태스크가 준비 큐로 이동합니다. 준비 큐는 CPU 스케줄 알고리즘에 따라 실행하도록 선택할 수 있습니다.

동일한 스레드는 자신을 무한정 차단하지 않고 동일한 뮤텍스의 lockfree 호출을 중첩할 수 있습니다. 동일한 스레드로 중첩된 잠금은 잠금 스레드를 차단하지 않습니다. 그러나 중첩된 잠금이 계수되므로 적절한 free가 실제로 뮤텍스를 릴리스합니다.

생성 요약
~OMOSMutex
OMOSMutex 오브젝트를 영구 삭제합니다.
메소드 요약
free
뮤텍스에 대한 잠금을 릴리스합니다.
getOsHandle
스레드에 기본 운영 체제 핸들을 리턴합니다.
lock
뮤텍스를 잠급니다.
unlock
뮤텍스에 대한 잠금을 릴리스합니다.

피드백