static void Main(string[] args) { MultiThreadSynchronization pg = new MultiThreadSynchronization(); Thread t1 = new Thread(threadFunc); Thread t2 = new Thread(threadFunc); //2개의 스레드 시작 t1.Start(pg); t2.Start(pg); //2개의 스레드 실행이 끝날 떄 까지 대기 t1.Join(); t2.Join(); Console.WriteLine(pg.number); //스레드 실행 완료 후 number 필드 값 출력 }
static void threadFunc(object inst) { MultiThreadSynchronization pg = inst as MultiThreadSynchronization; for (int i = 0; i < 100000; i++) { Monitor.Enter(pg); try { pg.number = pg.number + 1; } finally { Monitor.Exit(pg); } } }