본문 바로가기

일하면서 사용한 짧은 지식/C#

Thread와 ThreadPool 중 선택하기

Thread

일반적으로 하나의 쓰레드를 오래 동안 사용하거나 동일한 쓰레드에서 계속 작업을 진행해야 하는 경우 사용하는 것이 좋다.

 

ThreadPool

.NET의 Thread 클래스를 이용하여 쓰레드를 하나씩 만들어 사용하는 것이 아니라, 이미 존재하는 쓰레드풀에서 사용가능한 작업 쓰레드를 할당 받아 사용하는 방식이다.

다수의 쓰레드를 계속 만들어 사용하는 것보다 효율적이다.

짧게 짧게 실행되는 쓰레드를 사용할 때 이미 존재하는 쓰레드풀에서 할당 받아 사용하는 게 좋다.

 

 

내가 구현해야할 쓰레드 작업이 주기적으로 한번씩 비동기로 동작하고 종료하는 메서드라 ThreadPool을 이용하는 것이 좋다고 판단하였다.

 

C# Task 클래스는 쓰레드풀로부터 쓰레드를 가져와 비동기 작업을 실행
Task클래스 사용을 위해 흔히 사용되는 방법은 Task.Factory.StartNew()를 사용하여 실행하고자 하는 메서드에 대한 델리케이트를 지정하는 것이다.

이 StartNew()는 쓰레드를 생성과 동시에 실행하는 방식이다.

 

 

Task.Factory.StartNew()보다는 Task.Run() 사용하기

https://ivorycirrus.github.io/TIL/csharp-task-run/

 

C# Task.Run 사용하기

.Net Framework 4.5에서부터 스레드를 만드는 방법으로 Task.Run 메소드를 지원한다. 이는 그 이전까지 사용하던 Task.Factory.StartNew를 보다 가볍게 사용 할 목적으로 만들었다고 한다. 새로운 메소드를 제

ivorycirrus.github.io

위 내용을 보고 Task.Run(...)으로 해당 메서드를 실행시키는 것으로 구현하였다.