C#

Thread Pool

윤태영(Coding) 2023. 6. 16. 04:09

< Thread Pool >

수영장을 떠올려보자. 수영장에는 여러 개의 수영 차선이 있다. 이제 각 차선을 스레드라고 생각하고, 수영하는 사람들을 작업이라고 생각해보자. 수영장 관리자는 사람들이 수영할 때마다 새로운 차선을 만들지 않는다. 대신 이미 있는 차선을 활용한다. 이렇게 미리 만들어진 차선을 사용하는 것이 효율적이다. 이 개념이 바로 Thread Pool이다.

< 👨‍🍳 레스토랑에서의 Thread Pool >

레스토랑을 예로 들어보자. 레스토랑에는 요리사들이 있고, 주문이 들어올 때마다 요리를 만들어야 한다. 요리사들은 스레드처럼 생각할 수 있고, 주문은 작업으로 생각할 수 있다.

레스토랑이 바빠지면 요리사들은 계속해서 요리를 만들어야 하는데. 이때 레스토랑 주인이 매번 새로운 요리사를 고용하는 것은 비효율적이다. 대신 미리 여러 요리사를 고용해두고, 주문이 들어올 때마다 그들에게 요리를 맡기는 것이 효율적이다. 이 미리 고용된 요리사들의 그룹이 Thread Pool과 비슷한 개념이다.

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        Console.WriteLine("레스토랑이 문을 열었습니다. 주문을 기다리는 중...");

        // 5개의 주문이 들어왔다고 가정
        for (int i = 1; i <= 5; i++)
        {
            int orderNumber = i;
            ThreadPool.QueueUserWorkItem(o => ProcessOrder(orderNumber));
        }

        // 요리사들이 요리를 완료할 때까지 기다린다.
        Console.WriteLine("주문 처리중...");
        Thread.Sleep(5000);

        Console.WriteLine("모든 주문이 처리되었습니다!");
    }

    static void ProcessOrder(int orderNumber)
    {
        Console.WriteLine($"주문 번호 {orderNumber}를 처리하는 중...");
        Thread.Sleep(1000); // 요리하는 시간으로 가정
        Console.WriteLine($"주문 번호 {orderNumber} 처리 완료!");
    }
}


위의 코드에서는 레스토랑을 열고 5개의 주문을 처리한다. Thread Pool을 사용하여 여러 요리사들이 동시에 주문을 처리한다.

 

Reference : 이것이 C#이다

https://product.kyobobook.co.kr/detail/S000201856223

 

이것이 C#이다 | 박상현 - 교보문고

이것이 C#이다 | 전문가로 레벨업!C# 프로그래밍 완전 정복이 책은 C#의 기본, 고급 문법과 더불어 기초 클래스 라이브러리까지 다루고 있다. 총 22개 장으로, 앞서 배운 내용을 활용하면서 단계별

product.kyobobook.co.kr