본문 바로가기
프로그래밍언어 & 프레임워크/C#

C# 스레드(Thread)

by 공부하는개미 2021. 6. 21.
반응형

 

 

 

 

아래 글은 C# 스레드(Thread) 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.

 

 

 

📃 참고자료

 

  • C# 교과서(길벗 출판사) - 55단원 스레드 717 ~ 724페이지
  • 유튜브 채널 VisualAcademy [C# 교과서 마스터하기 55. 스레드]
  • 닷넷코리아 (https://www.dotnetkorea.com/)

 

 

 

 

 

https://www.youtube.com/watch?v=VZq7PqlUbyI 

 

 

 

 

 

✳ 프로세스와 스레드

 

- 스레드는 운영체제의 자원이며 프로그램 안에서 독립적으로 실행할 수  있는 것(멀티태스킹 운영체제)

 

 

 

✳ 프로세스(Process)

 

- 운영체제로부터 할당 받은 메모리에 코드와 데이터를 저장 및 CPU를 할당 받아 실행 가능한 상태

- 현재 실행 중인 프로그램을 프로세스라고 합니다

 

 

 

 

 

✳ 스레드(Thread)

 

- 운영 체제가 프로세서 시간을 할당하는 기본 단위입니다.

 

C#의 메인 메서드 코드는 순차적으로 실행됩니다. 하지만 메인 메서드에 또 다른 메서드 단위로 프로그램을 작성해 놓고, 이를 스레드 개체로 실행하면 메서드의 실행 순서를 윈도 운영 체제에 맡길 수 있습니다.

그러면 순차적으로 실행되지 않고 반복적으로 여러 메서드를 나누어서 처리합니다.

스레드는 이처럼 순차적으로 처리되지 않고, 여러 기능을 동시 다발적으로 실행할 때 사용하는 개념이며, 이를 닷넷에서는 Thread 같은 클래스로 제공합니다.

 

 

 

 

 

✳ 예제코드

// 프로세스(Process) : 하나의 프로그램 단위(프로젝트)
// 스레드(Thread) : 프로세스안에서 실행하는 단위 프로그램(메서드)
using System;
using System.Diagnostics;
using System.Threading;

class 스레드
{
    static void Main(string[] args)
    {
        //Win(); Sql(); Ide();
        ThreadStart ts1 = new ThreadStart(Win);
        ThreadStart ts2 = new ThreadStart(Sql);

        Thread t1 = new Thread(ts1);
        Thread t2 = new Thread(ts2);
        Thread t3 = new Thread(new ThreadStart(Ide));

        t3.Priority = ThreadPriority.Highest; // 우선순위 높게 

        t1.Start();
        t2.Start();
        t3.Start();

        // 프로세스
        Process.Start("IExplore.exe"); // 익스플로러 실행
        Process.Start("Notepad.exe");  // 메모장 실행 
    }
    private static void Ide()
    {
        DelayTime();
        Console.WriteLine("[3] IDE : Visual Studio");
    }
    private static void Sql()
    {
        Thread.Sleep(3000); // 3초 딜레이 
        Console.WriteLine("[2] DBMS : SQL Server");
    }
    private static void Win()
    {
        DelayTime();
        Console.WriteLine("[1] OS : Windows Server");
    }
    private static void DelayTime()
    {
        for (int i = 0; i < 100000000; i++) { } // 시간지연 메서드
    }
}

 

 

 

 

 

반응형