qmutex 예제

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

뮤텍스가 다른 스레드에 의해 잠겨 있는 경우 TRUE를 반환합니다. 그렇지 않으면 FALSE를 반환합니다. QThreads – 스레드 만들기에서 몇 줄이 변경되었습니다. 뮤텍스를 추가하면 뮤텍스를 잠그려는 시도라는 원하는 결과를 얻어야 합니다. 이 함수는 잠금을 얻은 경우 true를 반환합니다. 그렇지 않으면 false를 반환합니다. 재귀 뮤텍스는 속도가 느리며 비재귀 뮤텍스보다 더 많은 메모리를 소비합니다. QMutex는 경합되지 않은 케이스에서 빠른 속도로 최적화됩니다. 재귀가 아닌 QMutex는 해당 뮤텍스에 경합이 없는 경우 메모리를 할당하지 않습니다.

오버헤드가 거의 없는 곳에서 구성되고 파괴되므로 다른 클래스의 일부로 많은 뮤텍스가 있는 것이 좋습니다. 저작권 1992-2007 트롤 텍 ASA, http://www.trolltech.com. 전체 라이센스 설명서에 대 한 배포에 포함 된 라이센스 파일을 참조 하십시오. . 스레드의 공유 번호를 ID와 동일하게 변경한 후 스레드는 공유 번호가 ID와 실제로 동일한지 확인합니다. 다른 스레드가 검사 직전에 공유 변수를 변경하면 오류 메시지가 인쇄됩니다. . .

이 클래스의 모든 함수는 Qt가 스레드 support를 통해 빌드될 때 스레드에서 안전합니다.

이 특정 한 경우, 더 효율적인 구문은 QAtomicInt 될 것입니다. 이 특수 CPU 명령의 사용에서 원자성을 얻는다. 다른 스레딩 구문들을 구현하는 데 사용할 수 있는 하위 수준 클래스입니다. QMutex 생성 및 lock() 및 잠금 해제() 호출로 인해 성능 저하가 있을 수 있지만 출력에는 스레드 동작 측면에서 중요한 변경 사항이 표시됩니다. 이러한 두 메서드가 두 스레드에서 동시에 호출되는 경우 다음 시퀀스가 발생할 수 있습니다: 뮤텍스 잠금.

Sorry, comments are closed for this post.