tmd1 2024. 8. 23. 23:18
namespace ServerCore
{
    internal class Program
    {
        static int count = 1;
        static void MainThread(object obj)
        {
            Console.WriteLine($"Thread {count++} exacted");

        }

        static void Main(string[] args)
        {
            ThreadPool.SetMinThreads(1, 1);
            ThreadPool.SetMaxThreads(5, 5);

			// 옵션 x시 thread pool과 같이 실행
            for (int i = 0; i < 5; i++)
            {
                Task t = new Task( () => { while (true) { } } );
                t.Start();
            }

			// task 쪽에서 모든 스레드를 가져가 실행했으므로 아래는 실행되지 않음
            ThreadPool.QueueUserWorkItem(MainThread);

            while (true)
            {

            }
        }
    }
}

 

 

namespace ServerCore
{
    internal class Program
    {
        static int count = 1;
        static void MainThread(object obj)
        {
            Console.WriteLine($"Thread {count++} exacted");

        }

        static void Main(string[] args)
        {
            ThreadPool.SetMinThreads(1, 1);
            ThreadPool.SetMaxThreads(5, 5);

			// LongRunning 옵션을 붙이면 기존 thread와 같이 실행
            for (int i = 0; i < 5; i++)
            {
                Task t = new Task(() => { while (true) { } }, TaskCreationOptions.LongRunning);
                t.Start();
            }

            ThreadPool.QueueUserWorkItem(MainThread);

            while (true)
            {

            }
        }
    }
}