ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Thread
    C# 예제 공부일기 2020. 7. 31. 19:53

    실행중인 프로그램을 프로세스라고 한다. 운영체제는 이 프로세스를 CPU에 올렸다가 내렸다가 하면서 일을 하는데, 스레드란 프로세스 내부의 프로세스이다. 한 프로그램은 보통 하나의 스레드를 가지고 있다. 지금까지 했던 프로그래밍은 하나의 흐름 즉 하나의 스레드를 가지고 있었다. 하지만 여러 개의 스레드를 사용할 수 있다. 여러개의 스레드를 사용하는 것을 멀티스레드라고 한다.

     

    이 멀티 스레드가 등장한 배경은 하나의 프로그램에서 복잡한 동시 작업을 요구하기 시작하면서 프로세스보다 더 작은 개념이 도입된 것이 스레드이다. 

     

    동시에 작업을 하는 것을 보기 위해 Thread(Delegate 메소드) 로 메소드에 Thread.Sleep 메소드로 일정시간 정지를 시킬건데 첫 메소드는 10초 두번째 메소드는 15초 세 번째 메서드는 20초라고 할 때 만약 한개의 스레드에서 이뤄진다면 

    10초+15초+20초로 총 45초가 걸릴 것이다. 하지만 스레드로 진행한다면 20초밖에 걸리지 않는다.

    static void Main(string[] args)
            {
                Thread t1 = new Thread(threadFunc1);//특정 메소드를 Thread화 시킨다.
                Thread t2 = new Thread(threadFunc2);
                Thread t3 = new Thread(threadFunc3);
                t1.Start();
                t2.Start();
                t3.Start();
    
                Console.WriteLine("주 스레드 종료!");
            }
    
            static void threadFunc1()
            {
                Console.WriteLine("ThreadFunc1 run!");
                Console.WriteLine("10초 후에 프로그램 종료");
                Thread.Sleep(1000 * 10);
                Console.WriteLine("ThreadFunc1스레드 종료");
            }
            static void threadFunc2()
            {
                Console.WriteLine("ThreadFunc2 run!");
                Console.WriteLine("5초 후에 프로그램 종료");
                Thread.Sleep(1000 * 5);
                Console.WriteLine("ThreadFunc2스레드 종료");
            }
            static void threadFunc3()
            {
                Console.WriteLine("ThreadFunc3 run!");
                Console.WriteLine("3초 후에 프로그램 종료");
                Thread.Sleep(1000 * 3);
                Console.WriteLine("ThreadFunc3스레드 종료");
            }

    이때 주 스레드가 종료하더라도 나머지 스레드는 계속 돈다.

Designed by Tistory.