본문 바로가기
728x90
반응형

쓰레드동기화3

[c#] 쓰레드 동기화 클래스 3(AutoResetEvent, ManualResetEvent, CountdownEvent) 1. 신호에 의한 쓰레드 동기화 이전까지 배운 쓰레드 동기화들은 [c#] 쓰레드 동기화 클래스 1(Lock, Monitor) [c#] 쓰레드 동기화 클래스 2(Mutex, Semaphore) 공유 되는 리소스에 락을 걸어서 쓰레드 접근을 제한했다. 하지만 지금 배울 것은 대기중인 쓰레드에 신호를 보내어 쓰레드 흐름을 통제하는 방식이다. 많이 사용되는 방식에는 AutoResetEvent, ManualResetEvent, CountdownEvent, Wait/pulse 등이 있다. * 여기서 Event는 윈도우 프로그래밍에서 말하는 event와 다른 개념 = 쓰레드 동기화에 사용되는 OS리소스이다. 2. AutoResetEvent using System; using System.Threading; names.. 2019. 10. 8.
[c#] 쓰레드 동기화 클래스 2(Mutex, Semaphore) 이전글 [c#] 쓰레드 동기화 클래스 1(Lock, Monitor) 1. Mutex Mutex는 Monitor와 비슷하지만 한 프로세스 내 뿐만 아니라 프로세스간에서도 Locking이 가능하다. 하지만 Monitor Locking에 비해 50배 정도 느리므로 한 프로세스 내에서 Lock이 필요한 경우는 Lock이나 Monitor를 쓴다. Mutex를 using문으로 감쌌다고 해서 lock처럼 생각하면 안된다. mutex.ReleaseMutex를 사용해서 해제해야한다. using System; using System.Threading; namespace ThreadSafe { class Program { private static int baby = 0; private static object lockOb.. 2019. 10. 8.
[c#] 쓰레드 동기화 클래스 1(Lock, Monitor) 1. Unsafe Method : 쓰레드 동기화를 하지 않은 메서드 using System; using System.Threading; namespace ThreadSafe { class Program { private static int baby = 0; static void Main(string[] args) { for (int i = 0; i < 10; i++) { new Thread(CountBaby).Start(); } } private static void CountBaby() { baby++; Console.WriteLine(baby); } } } 2. Lock using System; using System.Threading; namespace ThreadSafe { class Progra.. 2019. 10. 8.
728x90
반응형