C#/네트워크 관련
Task 예시
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)
{
}
}
}
}