동기화시 가장 많이 사용하는 키워드는 lock
하지만 lock사용시 인수가 static일경우 사용 방법이 조금 틀리다
기본적으로 lock을 걸 경우 간단하게 내부 필드일 경우 this를 사용하면 되지만
static일경우 바로 lock을 사용할시 에러..
그렇다면??
typeof(클래스명)
이러한 형태로 나타내 줘야 한다
Object는??
더욱 간단하다
클래스명.object
이련형태로 lock을 결면 성공~!!!
사용 예)
public class Top{ private static int limit = 0; public void SayHello(){ int hash = Thread.CurrentThread.GetHashCode(); int count =0; lock(typeof(Top)){ while(count<10){ Console.WriteLine("Thread " + hash + ":" + limit++); count++; Thread.Sleep(10); } }//lock } } Object일 경우) public class Top{ private static object obj = new object(); public void SayHello(){ int hash = Thread.CurrentThread.GetHashCode(); int count =0; lock(Top.obj){ while(count<10){ Console.WriteLine("Thread " + hash + ":" + count++); Thread.Sleep(10); } }//lock } }