본문 바로가기

C#

C# Mutex를 이용한 프로세스 간 동기화

멀티 프로세스 환경에서 자원을 안전하게 공유하려면 동기화가 필수입니다. C#에서는 Mutex 클래스를 이용해 프로세스 간에 상호 배제(Mutual Exclusion)를 구현할 수 있습니다.

1. Mutex 기본 개념

Mutex는 하나의 프로세스만이 접근할 수 있도록 잠금을 제공합니다. 서로 다른 프로세스가 동일한 리소스를 사용할 때 충돌을 방지할 수 있습니다.

2. C#에서 Mutex 사용법

다음은 전역 네임스페이스를 사용하는 명명된 Mutex 생성 예제입니다.

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        // 전역 네임스페이스로 네임드 뮤텍스 생성
        bool createdNew;
        using (Mutex mutex = new Mutex(false, "Global\\MyAppMutex", out createdNew))
        {
            if (!createdNew)
            {
                Console.WriteLine("다른 프로세스가 이미 실행 중입니다.");
                return;
            }

            Console.WriteLine("프로세스가 실행 중입니다. 보호된 작업 시작...");
            // 보호할 코드 영역
            Thread.Sleep(5000); // 예: 5초간 작업
            Console.WriteLine("작업 완료.");
        }
    }
}

3. 주의할 점

Mutex를 사용한 후에는 반드시 해제해야 하며, 네임스페이스를 지정하면 시스템 전체에서 동기화가 가능하지만 관리자 권한이 필요할 수도 있습니다.

이처럼 C#의 Mutex를 활용하면 여러 프로세스 간 안전한 자원 공유와 동기화를 간단히 구현할 수 있습니다.