Monitor와 Lock 모두 objects.lock에 대한 액세스를 동기화하는 메커니즘을 제공합니다.
잠금은 바로가기이며 기본 사용을 위한 옵션입니다. TryEnter() Wait(), Pulse(), &PulseAll() 메서드를 사용하여 고급 멀티스레딩 솔루션을 구현하기 위해 더 많은 제어가 필요한 경우 Montior 클래스가 적합합니다.
잠금의 예 -
예
class Program{ static object _lock = new object(); static int Total; public static void Main(){ AddOneHundredLock(); Console.ReadLine(); } public static void AddOneHundredLock(){ for (int i = 1; i <= 100; i++){ lock (_lock){ Total++; } } }
모니터의 예 -
예
class Program{ static object _lock = new object(); static int Total; public static void Main(){ AddOneHundredMonitor(); Console.ReadLine(); } public static void AddOneHundredMonitor(){ for (int i = 1; i <= 100; i++){ Monitor.Enter(_lock); try{ Total++; } finally{ Monitor.Exit(_lock); } } } }