using System;
using System.Threading;
using System.Threading.Tasks;
namespace ServerCore
{
class Program
{
static void MainThread(object state)
{
for (int i=0;i<5;i++)
Console.WriteLine("Hellow Thread!");
}
static void Main(string[] args)
{
///결론 왠만하면 threadPool을 사용하고
///아니면 Task를 사용하면된다!
///Thread new는 거의 사용하지 않는다!!
///단기알바형식
///백그라운드 = true
///다시 돌아오지 않는 thread를 넣으면 통째로 먹통이 될수있다...
ThreadPool.SetMinThreads(1, 1);
ThreadPool.SetMaxThreads(5, 5);
for (int i = 0; i < 5; i++)
{
///직원이 사용할 일감을 정한다는 느낌
//Task t = new Task(() => { while (true) { } }, TaskCreationOptions.LongRunning);
///TaskCreationOptions.LongRunning 오래 걸릴꺼라는 것을 알려줘서 별도 처리하게 만들기
///
///만약 롱러닝테스크 설정을 안해주면 똑같이 ThreadPool이 먹통이 된다.
Task t = new Task(() => { while (true) { } });
t.Start();
}
/*///영영 돌아올수 없는 일감을 맥스치만큼 준다... 에러가 발생함!(먹통예상)
for (int i = 0; i < 5; i++)
ThreadPool.QueueUserWorkItem((obj) => { while (true) { } });*/
///정확히 먹통이 안됨!
ThreadPool.QueueUserWorkItem(MainThread);
/*Thread t = new Thread(MainThread); ///너무 무겁다 정직원이다
t.Name = "TestThread";
t.IsBackground = true; ///백그라운드로 돌리면 메인이 떨어지면 같이 떨어진다!!
t.Start();
Console.WriteLine("Waiting for Thread");
t.Join(); ///이 thread가 종료되지 않으면 밑에 것이 실행되지 않는다
Console.WriteLine("Hello World!");*/
while (true)
{
}
}
}
}
댓글 없음:
댓글 쓰기