C# 멀티 쓰레드(우선순위, ThreadPriority)
C# 멀티 쓰레드(우선순위, ThreadPriority)
쓰레드가 여러 개 있다면 한 쓰레드가 동작하고 나서 어떤 쓰레드가 동작할까? 아마도 높은 우선 순위를 가지고 있는 쓰레드가 수행 될 것이다. 각각의 쓰레드는 CPU 사용 권한에 대한 우선 순위가 있는데 우선 순위가 높을수록 CPU사용 권한을 먼저 할당받는다.
한 쓰레드에 대해 우선순위를 높여 주면 CPU 사용 권한을 우선적으로 갖는 것이다. Thread의 우선 순위와 관련된 프로퍼티가 있는데 열거형 값인 Highest, AboveNormal, Normal, BelowNormal, Lowest중 한 값이다. 아래의 예제를 살펴 보자.
using System; using System.Threading;
public class ThreadTest3 { public void FirstWork() { for(int i=0; i < 10; i++) { for(int j=0; j < 10; j++) { Thread.Sleep(100); Console.Write(","); } Console.WriteLine("F{0}", i); } }
public void SecondWork() { for(int i=0; i < 10; i++) { for(int j=0; j < 10; j++) { Thread.Sleep(100); Console.Write(","); } Console.WriteLine("S{0}", i); } } }
class TestMain { [MTAThread] public static void Main() { ThreadTest3 t = new ThreadTest3(); Thread first = new Thread(new ThreadStart(t.FirstWork)); Thread second = new Thread(new ThreadStart(t.SecondWork));
first.Priority = ThreadPriority.Lowest; second.Priority = ThreadPriority.Highest;
first.Start(); second.Start(); } }
|