qmutex 예제

예를 들어 사용자에게 메시지를 두 줄로 인쇄하는 방법이 있다고 가정해 보겠습니다. 이것은 단지 샘플 코드, 실제 코드에서 QTest::qSleep를 사용 하지 마십시오. QMutex의 목적은 한 번에 하나의 스레드만 액세스할 수 있도록 개체, 데이터 구조 또는 코드 섹션을 보호하는 것입니다(Java 동기화된 키워드와 유사). 예를 들어 사용자에게 메시지를 두 줄로 인쇄하는 방법이 있다고 가정해 보겠습니다. true로 설정된 경우 스레드가 루프에서 튀어나오게 됩니다. 따라서 하나의 스레드에서만 액세스해야 하며 뮤텍스 잠금 메커니즘을 사용합니다. 이 예제에서는 먼저 공유할 Int 변수를 생성합니다. 그런 다음 지정된 시간에 하나의 스레드만 번호를 수정할 수 있으며 결과가 정확합니다. 이것은 물론 사소한 예이지만 특정 순서로 수행해야하는 다른 경우에 적용됩니다. 오늘이 게시물에서는 QMutex를 사용하여 QT 멀티 스레드 환경에서 공유 변수를 사용하는 방법을 설명하는 간단한 예제 코드를 공유하고 싶습니다.

. 경고: 다양한 플랫폼에서 재귀 뮤텍스의 구현이 다르기 때문에 이전에 뮤텍스를 잠근 동일한 스레드에서 이 함수를 호출하면 정의되지 않은 결과가 반환됩니다. QMutex는 경합되지 않은 케이스에서 빠른 속도로 최적화됩니다. 재귀가 아닌 QMutex는 해당 뮤텍스에 경합이 없는 경우 메모리를 할당하지 않습니다. 오버헤드가 거의 없는 곳에서 구성되고 파괴되므로 다른 클래스의 일부로 많은 뮤텍스가 있는 것이 좋습니다. 뮤텍스의 잠금을 해제합니다. 다른 스레드에서 뮤텍스의 잠금을 해제하려고 하면 뮤텍스를 잠근 스레드와 잠금해제하면 오류가 발생합니다. 잠김되지 않은 뮤텍스의 잠금을 해제하면 정의되지 않은 동작이 발생합니다.

. . . 카운터의 구조는 종종 위키 백과에서 모니터라고합니다 (강조 광산): 뮤텍스를 잠그려는 시도. 이 함수는 잠금을 얻은 경우 true를 반환합니다. 그렇지 않으면 false를 반환합니다. 다른 스레드에서 뮤텍스를 잠근 경우 이 함수는 뮤텍스를 사용할 수 있게 될 때까지 최대 시간 시간 밀리초동안 기다립니다. . . . 공유 상태의 스레드를 올바르게 사용하는 것은 간단하지 않습니다.

Comments are closed.