Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 스레드(Thread) 완벽 가이드: 개념부터 생명주기와 생성 예제까지

스레드(Thread)는 프로그램의 실행 경로를 의미합니다. 각 스레드는 고유한 제어 흐름을 정의하며, 애플리케이션이 복잡하고 시간이 오래 걸리는 작업을 처리해야 할 때 여러 실행 경로, 즉 스레드를 만들어 각 스레드가 특정 작업을 담당하도록 구성하면 효율적입니다.

스레드의 생명주기는 System.Threading.Thread 클래스의 객체가 생성되는 시점에 시작되고, 해당 스레드가 종료되거나 실행을 완료하는 시점에 끝납니다.

스레드 생명주기의 상태

스레드 생명주기에는 다음과 같은 다양한 상태가 존재합니다.

  • Unstarted(시작되지 않음) 상태 – 스레드 인스턴스는 생성되었지만 아직 Start 메서드가 호출되지 않은 상태입니다.
  • Ready(실행 준비됨) 상태 – 스레드가 실행할 준비를 마치고 CPU 사이클을 기다리고 있는 상태입니다.
  • Not Runnable(실행 불가능) 상태 – 다음과 같은 경우 스레드를 실행할 수 없습니다.
    • Sleep 메서드가 호출된 경우
    • Wait 메서드가 호출된 경우
    • I/O 작업으로 인해 차단(Blocked)된 경우
  • Dead(종료) 상태 – 스레드가 실행을 완료했거나 중단(Abort)된 상태입니다.

C#에서 스레드 생성하기

다음 예제는 C#에서 스레드를 생성하는 방법을 보여줍니다.

using System;
using System.Threading;

namespace Demo {
    class Program {
        public static void ThreadFunc() {
            Console.WriteLine("Child thread starts");
        }

        static void Main(string[] args) {
            ThreadStart childref = new ThreadStart(ThreadFunc);
            Console.WriteLine("In Main: Creating the Child thread");
            Thread childThread = new Thread(childref);
            childThread.Start();
            Console.ReadKey();
        }
    }
}

실행 결과

In Main: Creating the Child thread
Child thread starts

위 코드에서는 먼저 ThreadStart 델리게이트로 스레드가 실행할 메서드(ThreadFunc)를 지정한 뒤, 이를 전달하여 Thread 객체를 생성합니다. 그리고 Start() 메서드를 호출하면 자식 스레드가 시작되어 별도의 실행 경로에서 자신의 작업을 수행하게 됩니다.