C# 멀티 쓰레드(동기화, Monitor)

홈 > 공유팁! > 프로그램 관련
프로그램 관련

C# 멀티 쓰레드(동기화, Monitor)

꽁스짱 0 1062

C# 멀티 쓰레드(동기화, Monitor)

lock 문 이외에 System.Monitor라는 클래스가 있는데 이 Monitor 클래스에는 Enter, Exit 메소드가 있다. Enter 메소드는 잠금 상황으로, Exit 메소드는 잠금을 해제하는 역할을 한다. 앞에서 작성한 예제를 System.Monitor를 이용하는 예문으로 바꿔 보자.

using System;

using System.Threading;

public class ThreadTest3

{

private object obj = new object();

public string lockString = "Hello";

public void Print(string rank)

{

//Monitor.Enter 구문은 처음 쓰레드가 끝날때 까지 다른 쓰레드가 접근 금지

Monitor.Enter(obj);

for(int i=0; i < 5; i++)

{

for(int j=0; j < 5; j++)

{

Thread.Sleep(100); Console.Write(",");

}

Console.WriteLine("{0}{1} ", rank, lockString);

}

Monitor.Exit(obj);

}

public void FirstWork() { Print("F"); }

public void SecondWork() { Print("S"); }

}

class TestMain

{

[MTAThread]

public static void Main()

{

ThreadTest3 t = new ThreadTest3();

Thread first = new Thread(new ThreadStart(t.FirstWork));

Thread second = new Thread(new ThreadStart(t.SecondWork));

first.Start(); second.Start();

}

}

0 Comments
제목