멀티 프로세스 환경에서 자원을 안전하게 공유하려면 동기화가 필수입니다. 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를 활용하면 여러 프로세스 간 안전한 자원 공유와 동기화를 간단히 구현할 수 있습니다.
'C#' 카테고리의 다른 글
| C# 숫자 서식 지정(Custom Numeric Format) 사용하기 (1) | 2026.07.21 |
|---|---|
| C# Stack<T>와 Queue<T> 성능 비교 및 활용 사례 (0) | 2026.07.21 |
| C# XML 직렬화와 역직렬화 고급 기법 (0) | 2026.07.16 |
| C# async/await에서 ConfigureAwait(false) 사용 이유 (0) | 2026.07.15 |
| C# 리플렉션으로 애셈블리 의존성 분석하기 (0) | 2026.07.15 |