본문 바로가기

[2]SW Development Note/[2-2.2].NET CLR4

[Thread Book #10] Monitor 생성자로 잠그기 [Thread Book #10] Monitor 생성자로 잠그기 교착 상태 (DeadLock)라고 부르는 흔한 다른 멀티 스레드 오류를 보여준다.교착 상태는 프로그램 작동을 멈추게 하는 원인이다.이번예제의 첫부분은 교착상태를 회피할수있는 새로운 'Monitor' 생성자다.그다음에는 교착 상태를 얻을때 이전에 설명했던 lock 키워드를 사용한다. 교착상태를 회피할수 생성자다. class Program { static void Main(string[] args) { object lock1 = new object(); object lock2 = new object(); new Thread(() => LockTooMuch(lock1, lock2)).Start(); lock (lock2) { Thread.Sleep.. 2020. 7. 26.
[Thread Book #8 ] 스레드의 파라미터 전달 [Thread Book #8] 스레드의 파라미터 전달 class Program { static void Main(string[] args) { var sample = new ThreadSample(10); var threadOne = new Thread(sample.CountNumbers); threadOne.Name = "ThreadOne"; threadOne.Start(); threadOne.Join(); Console.WriteLine("--------------------------"); var threadTwo = new Thread(Count); threadTwo.Name = "ThreadTwo"; threadTwo.Start(8); threadTwo.Join(); Console.WriteLi.. 2020. 7. 26.
[Thread Book #5] 스레드 상태 조사 [Thread Book #5] 스레드 상태 조사 스레드가 가질 수 있는 상태를 설명하며 스레드가 이제 시작됐는지의 여부나 스레드가 봉쇄 상태인지의 여부에 관한 정보를 얻을때 유용하다.스레드는 독립적으로 실행되므로 언제든지 상태가 바뀔수 있음에 주목하길 바란다. class Program { static void Main(string[] args) { Console.WriteLine("Starting program..."); Thread t = new Thread(PrintNumbersWithStatus); Thread t2 = new Thread(DoNothing); Console.WriteLine(t.ThreadState.ToString()); t2.Start(); t.Start(); for (int i.. 2020. 7. 26.
[Thread Book #7 ] 포그라운드 스레드와 백그라운드 스레드 [Thread Book #7 ] 포그라운드 스레드와 백그라운드 스레드 class Program { static void Main(string[] args) { // 다른 두 스레드를 정의한 메인 프로그램을 시작한다. var sampleForeground = new ThreadSample(10); var sampleBackground = new ThreadSample(20); var threadOne = new Thread(sampleForeground.CountNumbers); threadOne.Name = "ForegroundThread"; var threadTwo = new Thread(sampleBackground.CountNumbers); threadTwo.Name = "BackgroundThre.. 2020. 7. 26.