본문 바로가기

C#

C# 스레드 풀(ThreadPool)과 작업 큐(Task Queue) 이해하기

스레드는 프로그램의 작업 단위를 의미하며, 많은 스레드를 직접 관리하는 것은 복잡하고 비효율적일 수 있습니다. C#에서는 ThreadPool작업 큐(Task Queue)를 통해 효율적인 스레드 관리를 제공합니다.

1. ThreadPool이란?

ThreadPool은 재사용 가능한 스레드 모음으로, 필요할 때마다 새로운 스레드를 생성하지 않고 관리함으로써 성능 저하를 줄입니다. 작업을 스레드 풀에 큐에 넣으면 스레드 풀에서 알맞은 스레드를 할당해 작업을 실행합니다.

2. 작업 큐(Task Queue)는 무엇인가?

작업 큐는 실행 대기 중인 작업이 저장되는 공간입니다. C#에서는 Task 클래스를 사용해 비동기 작업을 생성하고 큐에 넣어 처리합니다. 이를 통해 UI 스레드 차단 없이 백그라운드 작업 처리가 가능해집니다.

3. ThreadPool 사용 예제

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        ThreadPool.QueueUserWorkItem(Work);
        Console.WriteLine("메인 스레드 작업 중...");
        Console.ReadLine();
    }

    static void Work(object state)
    {
        Console.WriteLine("스레드 풀에서 작업 실행 중");
    }
}

4. Task 큐 사용 예제

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        Task task = Task.Run(() =>
        {
            Console.WriteLine("작업 큐(Task)에서 실행 중");
        });

        Console.WriteLine("메인 스레드 계속 실행");
        await task;
    }
}

ThreadPool과 Task 큐는 비동기 프로그래밍과 스레드 관리에 필수적인 도구입니다. 두 개념을 잘 활용하면 효율적이고 안정적인 C# 프로그램을 작성할 수 있습니다.