[c++] 프로세스 간 뮤텍스 공유

목차


뮤텍스란 무엇인가요?

뮤텍스(Mutex)는 병렬 프로그래밍 환경에서 공유 리소스에 대한 동시 엑세스를 조율하는 데 사용되는 동기화 매커니즘입니다. 뮤텍스는 한 번에 하나의 스레드 또는 프로세스만이 임계 구역(critical section)에 접근할 수 있도록 합니다.


프로세스 간 공유 메모리를 사용한 뮤텍스 구현

프로세스 간 뮤텍스를 구현하는 한 가지 방법은 공유 메모리를 사용하는 것입니다. 두 개 이상의 프로세스가 동일한 공유 메모리에 접근하여 상호 배제를 구현할 수 있습니다. 이를 위해 Windows에서는 CreateMutexOpenMutex, POSIX 시스템에서는 shm_openmmap을 사용하는 등의 방법을 사용할 수 있습니다.


뮤텍스를 사용한 예제 코드

다음은 C++에서 Windows API를 사용하여 프로세스 간 뮤텍스를 구현하는 간단한 예제입니다.

#include <iostream>
#include <windows.h>

int main()
{
    HANDLE hMutex = CreateMutex(NULL, FALSE, "Global\\MyMutex");
    if (hMutex != NULL)
    {
        if (GetLastError() == ERROR_ALREADY_EXISTS)
        {
            std::cout << "Mutex already exists" << std::endl;
        }
        else
        {
            std::cout << "Mutex created" << std::endl;
        }

        // 뮤텍스 사용 후에는 반드시 뮤텍스 핸들을 닫아야 합니다.
        CloseHandle(hMutex);
    }
    else
    {
        std::cout << "Failed to create mutex" << std::endl;
    }

    return 0;
}

이 예제는 CreateMutex 함수를 사용하여 “Global\MyMutex”라는 이름의 전역 뮤텍스를 생성합니다. 생성된 뮤텍스는 다른 프로세스에서 OpenMutex 함수를 사용하여 열 수 있습니다.


참고 자료