안녕하세요 마블랑입니다.
Thread(쓰레드)를 이용한 프로그래밍을 할때 공통된 변수에 동시에 접근하면 데이터가 정확하게 나오지 않습니다.
정확한 데이터가 나오게 하려면 임계영역을 만들고 그 안에서 변수에 접근을 해야하는데요
이번 포스팅은 C#에서 임계영역을 만들어 여러 Thread(쓰레드)에서 접근할때 변수를 차례대로 사용하여 정확한 데이터를 사용하는 방법에 대해서 알아보겠습니다.
C#에서 임계영역을 만들때 여러가지 방법이 있겠지만 개인적으로 가장 간단하다고 생각하는 방법은 Mutex 클래스를 이용하는 것입니다.
바로 사용법을 알아보겠습니다.
Mutex mutex; // Mutex 객체 선언
mutex = new Mutex(); // Mutex 객체 생성
mutex.WaitOne(); // 임계영역 설정
/*
전역변수 등 공통된 변수 접근..
...
*/
mutex.ReleaseMutex(); // 임계영역 해제
mutex.Close(); // Mutex 객체 닫기
굉장히 쉽습니다. 객체를 생성해주고 WaitOne()으로 임계영역을 할당하고 변수를 다 사용하고 난뒤에 ReleaseMutex()로 임계영역을 해제해주면 됩니다.
주의할점은 ReleaseMutex()를 호출해주지 않으면 해당 임계영역이 계속 변수를 잡고 있으므로 버그가 발생할수 있습니다.
반드시 ReleaseMutex()를 사용하였는지 체크해주세요~
이상 마블랑이었습니다.
읽어주어서 고맙습니다.
'개발 이야기 > C# 이야기' 카테고리의 다른 글
C# 윈도우 프로세스 실행매개변수 (0) | 2020.10.22 |
---|---|
C# Random 난수 생성 Next 범위 (0) | 2020.10.06 |
C# DLL 오류 DllNotFoundException BadImageFormatException (0) | 2020.09.29 |
C# WPF 다른버튼 클릭하기 (0) | 2020.07.21 |
C# WPF 클릭위치 구하기 (0) | 2020.06.29 |
댓글