DS 's RoOm
김도선님의 블로그입니다
2012년 12월 26일 수요일
Thread Getting Started [1]
스레드 사용에 있어서. 너무 혼란이 생겼다. 다시 스레드 공부해보자
namespace ThreadStarted { class ThreadTest { static void Main(string[] args) { Task.Factory.StartNew(Go); /// 스레드를 terminate 하기위한 방법은 finally 또는 Using을 사용하자 /// 스레드를 생성했다면 Join을 사용하자, /// Pooled Thread를 이용했다면 event Wait Handle을 사용하자 // 백그라운드로 돌리면 Main스레드는 그냥 바로 종료하게됩니다. // foreground로 돌리면 ReadLine()을 입력할때까지 대기를 하게되죠 Thread worker = new Thread(() => Console.ReadLine()); if (args.Length > 0) worker.IsBackground = true; // worker.Start(); // 쓰레드를 사용하는 많은 방법들이 있다. // 1. delegate인 new ThreadStart() Thread t = new Thread(new ThreadStart(Go)); t.Start(); Go(); //######################## // 2. 생성자로 메소드의 주소를 넘긴다. Thread t2 = new Thread(Go); t2.Start(); //######################## // 3. Lamda 표현식으로 바로 Thread t3 = new Thread(() => Console.WriteLine("new")); t3.Start(); //######################## // 4. 람다 표현식으로는 number of many argument를 넘겨줄수잇다. Thread t4 = new Thread(() => Print("HIHIHI", 1, 4.0)); t4.Start(); //######################## // 5. Thread 객체 생성없이 빠르고 간단하게 생성 가능하다. new Thread(() => { Console.WriteLine("I'm runing on anotehr Thread!"); Console.WriteLine("This is so easy"); } ).Start(); //######################## // 6. 요렇게도 가능하군요 new Thread(delegate() { Console.WriteLine("delegate USE Thread"); }).Start(); //######################## // 7. object인자를 받는 쓰레드를 만들었습니다. Thread newt1 = new Thread(Print); // object newt1.Start("Hello"); /// Thread Priority /// using(Process p = Process.GetCurrentProcee()) /// p.PriorityClass = ProcessPriorityClass.High; } static void Print(object messageObj) { string message = (string)messageObj; Console.WriteLine(message); } static void Print(string message, int i, double d) { Console.WriteLine(message); Console.WriteLine(i.ToString() + " " + d.ToString()); } static void Go() { Console.WriteLine("Hello!"); } } }
댓글 없음:
댓글 쓰기
최근 게시물
이전 게시물
홈
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기