※프로세스(Process)
1개의 응용프로그램 실행 인스턴스()
쓰레드
쓰레드

※쓰레드(Thread)
1개의 프로세스내에서 실행되는 흐름(작업)
class MultiMediaPlayer
{
   public static void Main()
   {
       기본 쓰레드
           동영상실행
           소리실행
   }
}


※쓰레드의 실행원리
※쓰레드 생성
System.Threading 네임스페이스
   └→Thread 클래스
             └→┌Thread(Thread Start)*
                   └Thread(Parameterd Thread Start)*

delegate void ThreadStart(???);
ThreadStart ts = new ThreadStart(메소드명);//C#2.0
                    = new ThreadStart(new ThreadStart(메소드명));//C#1.0
                    = 메소드;

쓰레드 실행
Start(); : Thread Start 대리자를 통해 실행
Start(Object o); Parametered ThreadStart 대리자를 통해 실행

정리(시작->실행)
class MultiMediaPlayer
{
   public static void Main()
   {
       내용//그냥 실행시 여기서 대기하게됨
       Thread t1 = new Thread(mp3player);
       t1.Start();
       Thread t2 = new Thread(Animation);
       t2.Start();
   }
   public void mp3Player()//t1
   {
   }
   public void Animation()//t2
   {
   }
}

윈도우 프로그램에서 쓰레드 작업
   기본 쓰레드(=생성자 쓰레드)
       역할:(폼을 생성한다//컨트롤을 생성) + (이벤트를 처리)

   작업자 쓰레드
       역할컨트롤의 상태를 변경시키는 역할
정상적이지 않은 케이스
따라서 새로운 쓰레드는 메세지큐를 통해 처리
작업자는 Enqueue
기본은 Dequeue



Lock는 값형은 불가, 참조형만 가능
//값을 포함한 개체를 잠가서 처리
AND