컴퓨터 지식 네트워크 - 컴퓨터 구성 - Windows32 Thread API에서 사용할 수 있는 여러 공유 데이터 상호 배제 메커니즘과 이를 적용하는 방법

Windows32 Thread API에서 사용할 수 있는 여러 공유 데이터 상호 배제 메커니즘과 이를 적용하는 방법

Windows32 Thread API 공유 데이터 상호 배제 메커니즘에는 이벤트, 중요 섹션, 뮤텍스, 세마포 등 4가지 유형이 있습니다. 각각의 설명은 다음과 같습니다:

1. 이벤트: WIN32에서 제공하는 가장 유연한 스레드 간 동기화 방법입니다.

사용법:

CreateEvent를 사용하여 이벤트를 만듭니다. 수동으로 설정해야 하는 이벤트의 경우 해당 이벤트가 필요하거나 발생하는 경우 SetEvent 및 ResetEvent를 사용하여 이벤트를 설정합니다.

2. 중요 섹션: 여러 스레드가 동시에 코드 세그먼트를 실행하는 것을 방지합니다.

사용법:

1) 중요 섹션을 설정해야 하는 경우 먼저 CRITICAL_SECTION g_cs를 사용하여 중요 섹션 개체를 정의해야 합니다.

2) 사용 영역 전에 중요 섹션을 초기화하고, 초기화CriticalSection(amp; g_cs); 함수를 사용하세요.

3) 중요 섹션에 들어가야 할 경우 EnterCriticalSection(amp; g_cs) 함수를 사용하세요. 스레드가 입력되지 않습니다.

4) 임계 섹션을 떠날 때 LeaveCriticalSection(amp; g_cs);을 사용하면 다른 스레드가 임계 섹션에 들어갈 수 있습니다.

5) 중요 섹션이 더 이상 사용 가치가 없으면 다음을 사용하여 중요 섹션을 삭제해야 합니다.

3. : 뮤텍스는 일반적으로 여러 스레드 또는 프로세스의 활동을 조정하고 리소스의 "잠금" 및 "잠금 해제"를 제어하여 공유 리소스에 대한 액세스를 제어하는 ​​데 사용됩니다.

사용법:

1) 먼저 뮤텍스 개체를 만들고 HANDLE CreateMutex() 함수를 사용하여 핸들을 가져옵니다.

2) 그런 다음 스레드에서; 가능합니다. 충돌 영역 전에 WaitForSingleObject 함수를 호출하고, 함수에 핸들을 전달하고, 뮤텍스 개체를 점유하도록 요청합니다. dwWaitResult = WaitForSingleObject(hMutex, 5000L)

3) ***공유 리소스 접근이 종료되고 뮤텍스가 해제됩니다. 독점 객체 점유: ReleaseMutex(hMutex)

4) 마지막으로 CloseHandle 함수를 사용하여 뮤텍스 객체를 삭제합니다.

4. 세마포어: 신호 개체는 제한된 수의 스레드가 동시에 공유 리소스에 액세스할 수 있도록 허용합니다.

사용법:

1) 세마포어가 필요한 경우 먼저 CreateSemaphore 함수를 호출하여 세마포어를 생성합니다.

2) 리소스를 요청해야 하는 경우, WaitForSingleObject 함수를 호출하거나 WaitForMultipleObject 함수가 세마포어를 기다립니다.

3) 리소스 사용 후 ReleaseSemaphore 함수를 호출하여 세마포어를 해제합니다

上篇: 와이파이 신호는 때때로 어떻게 되나요? 下篇: Crysis 1을 스위치로 얼마나 오래 플레이할 수 있나요?
관련 내용