本文へジャンプ
  • ながの子育て応援宣言
  • 行動宣言募集
  • 婚活サポーター募集中
  • 婚活の秘訣
  • ながの結婚支援ネットワーク

投稿

윈도우 mutex 예제

2019年8月2日

다음 예제에서는 두 개의 스레드를 주문하기 위해 이벤트 개체를 사용하는 방법을 보여 줍니다. 이벤트 개체는 CreateEvent()를 호출하여 만들어집니다. 이 개체는 수동 재설정이 필요하며 신호가 없는 상태로 만들어집니다. 그런 다음 두 개의 스레드가 만들어집니다. 첫 번째 스레드는 루틴 myThreadA()를 실행하고 이벤트를 기다립니다. 두 번째 스레드는 메시지를 인쇄한 다음 이벤트 개체에 신호를 보내는 루틴 myThreadB()를 실행합니다. 신호를 사용하면 첫 번째 스레드가 실행을 계속한 다음 두 번째 메시지를 인쇄합니다. 따라서 아래 예제와 같이 TryEnterCriticalSection()를 사용하여 카운터 변수에 대한 액세스를 보호하는 코드를 작성할 수 있습니다. 뮤텍스 개체가 다른 스레드가 소유하는 경우 wait 함수는 요청 스레드를 차단하여 소유 스레드가 ReleaseMutex 함수를 사용하여 뮤텍스 개체를 해제할 때까지 차단합니다.

wait 함수의 반환 값은 신호로 설정된 뮤텍스 의 상태 이외의 이유로 함수가 반환되는지 여부를 나타냅니다. 뮤텍스 개체는 스레드가 소유하지 않을 때 상태가 신호로 설정되고 소유될 때 신호가 지정되지 않는 동기화 개체입니다. 한 번에 하나의 스레드만 뮤텍스 개체를 소유할 수 있으며, 이 개체의 이름은 공유 리소스에 대한 상호 배타적 액세스를 조정하는 데 유용하다는 사실에서 비롯됩니다. 예를 들어 두 스레드가 동시에 공유 메모리에 쓰는 것을 방지하기 위해 각 스레드는 메모리에 액세스하는 코드를 실행하기 전에 뮤텍스 개체의 소유권을 기다립니다. 공유 메모리에 작성한 후 스레드는 뮤텍스 개체를 해제합니다. shared_mutex = CreateMutex (NULL, TRUE, lpszMutex); 다중 스레드 응용 프로그램의 디버깅은 큰 주제이며이 자습서의 다른 장에서 제공됩니다. 그러나 이전 섹션의 동일한 예제를 사용하여 Visual Studio 2010을 사용하여 디버깅을 시작하는 방법을 간략하게 설명합니다. 다음 예제에서는 CreateMutex 함수를 사용하여 뮤텍스 개체를 만들고 CreateThread 함수를 만들어 작업자 스레드를 만듭니다. 스레드는 CreateMutex 또는 CreateMutex 함수를 사용하여 뮤텍스 개체를 만듭니다. 생성 스레드는 mutex 개체의 즉각적인 소유권을 요청할 수 있으며 뮤텍스 개체의 이름을 지정할 수도 있습니다. 또한 명명되지 않은 뮤텍스를 만들 수도 있습니다. 뮤텍스, 이벤트, 세마포 및 타이머 개체의 이름에 대한 자세한 내용은 프로세스 간 동기화를 참조하십시오.

CreateMutex() 호출은 뮤텍스의 선택적 이름, 값 0 또는 CREATE_MUTEX_INITIAL_OWNER 값을 포함하는 플래그, 호출 스레드가 소유한 뮤텍스를 생성해야 한다는 것을 나타내는 플래그 및 뮤텍스에 대한 액세스 권한. 이 예제에서는 구조화 된 예외 처리를 사용 하 여 스레드가 mutex 개체를 제대로 해제 합니다. __finally 코드 블록은 __try 블록이 종료되는 방식에 관계없이 실행됩니다(__try 블록에 TerminateThread 함수에 대한 호출이 포함되어 있지 않은 경우).

グローバルメニューへジャンプ

ページのトップへ