mfc mutex 예제

이 예제에서는 구조화 된 예외 처리를 사용 하 여 스레드가 mutex 개체를 제대로 해제 합니다. __finally 코드 블록은 __try 블록이 종료되는 방식에 관계없이 실행됩니다(__try 블록에 TerminateThread 함수에 대한 호출이 포함되어 있지 않은 경우). 이렇게 하면 뮤텍스 개체가 실수로 포기되는 것을 방지할 수 있습니다. 뮤텍스는 CreateMutex() 또는 CreateMutexEx()를 호출하여 만들어집니다. 호출은 핸들을 새로 만든 뮤텍스 개체로 반환합니다. 즉, 이벤트는 하나 이상의 스레드에 이벤트가 발생했음을 알리는 데 사용됩니다. 세마포, 뮤텍스 또는 조건 변수를 사용하여 동일한 작업을 수행할 수 있습니다. 응용 프로그램이 뮤텍스로 완료되면 CloseHandle()를 호출하여 커널 리소스를 해제해야 합니다. 다음 예제에서는 뮤텍스를 만들고 해제하는 프로세스를 보여 줍니다: 뮤텍스는 커널 개체이며, 이를 통해 프로세스 간에 공유할 수 있습니다. 이것은 또한 뮤텍스 보호 섹션이 임계 섹션보다 무거운 무게를 의미합니다. cMutex 개체의 lpszName 이름입니다.

이름이 같은 다른 뮤텍스가 있는 경우 개체가 프로세스 경계를 넘어 사용되는 경우 lpszName을 제공해야 합니다. NULL이면 뮤텍스의 이름이 지정되지 않습니다. 이름이 기존 뮤텍스와 일치하면 생성자는 해당 이름의 뮤텍스를 참조하는 새 CMutex 개체를 빌드합니다. 이름이 뮤텍스가 아닌 기존 동기화 개체와 일치하면 생성이 실패합니다. CMutex 개체를 만든 후 GetLastError를 사용하여 뮤텍스가 아직 존재하지 않았는지 확인합니다. 뮤텍스가 예기치 않게 존재한 경우 불량 프로세스가 쪼그리고 있음을 나타낼 수 있으며 뮤텍스를 악의적으로 사용하려고 할 수 있습니다. 이 경우 권장되는 보안 에 민감한 절차는 핸들을 닫고 개체를 만드는 데 실패한 것처럼 계속하는 것입니다. 세마포는 스레드 간에 리소스 가용성을 전달하는 방법뿐만 아니라 숫자 수를 추적하는 방법입니다. 가장 간단한 수준에서 뮤텍스의 대체 구현으로 사용할 수 있습니다. 더 복잡한 용도의 경우 여러 스레드 간에 준비 상태를 전달하는 것입니다. 그 두 번째 주장은 바보입니다. 공유 그래프(및 기타 많은 컨텍스트)에서 재귀 그래프 워커에서 많은 의미를 가지는 뮤텍스를 재귀적으로 획득하려고 하면 동일한 뮤텍스에서 동일한 스레드에서 CSingleLock을 선언하려고 하면 뮤텍스가 이미 퀴어드.

Ce contenu a été publié dans Non classé par samuel. Mettez-le en favori avec son permalien.