본문 바로가기
C#, C++, C

C# 중복실행방지 mutex

by 전재훈 2015. 9. 24.
반응형


뮤텍스 : 뮤텍스는 화장실에 들어가기 위한 열쇠로 비유할 수 있습니다. 즉 화장실에 들어갈 수 있는 열쇠를 한 사람이 갖고 있다면, 한 번에 열쇠를 갖고 있는 그 한 사람만이 들어갈 수 있습니다. 화장실에 열쇠를 갖고 있는 사람이 들어가 볼일을 다 본 후에는 줄을 서서 기다리고 있는(대기열-큐) 다음 사람에게 열쇠를 주게 됩니다.  

 

공식적인 정의(심비안 개발자 라이브러리에서 발췌) : 뮤텍스는 한 번에 하나의 쓰레드만이 실행되도록 하는 재 입장할 수 있는 코드 섹션에 직렬화된  접근이 가능하게 할 때 사용됩니다. 뮤텍스 객체는 제어되는 섹션에 하나의 쓰레드만을 허용하기 때문에 해당 섹션에 접근하려는 다른 쓰레드들을 강제적으로 막음으로써 첫 번째 쓰레드가 해당 섹션을 빠져나올 때까지 기다리도록 합니다.


씨샵에서는 System.Threading 를 통해 기본적으로 뮤텍스를 제공해줍니다.


사용법은 간단하구요


Program.cs에서 구현해주시면 됩니다. 


아래는 예제코드입니다.


    using System.Threading;


    static class Program

    {

        /// <summary>

        /// 해당 응용 프로그램의 주 진입점입니다.

        /// </summary>

        [STAThread]

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

                       

            //뮤텍스 > 중복실행 방지

            String mtxName = "testName";

            Boolean mtxSuccess;

            Mutex mtx = new Mutex(true, mtxName, out mtxSuccess);

            

            if (!mtxSuccess)

            {

                MessageBox.Show("이미실행중입니다.");

                return;

            }


            //실제 프로세스 구현해주시면됩니다.     

            mtx.ReleaseMutex();

        }

반응형

댓글