Programming/C# - Window

C#/ Task와 Thread 클래스 비교 설명

esoog Polaris 2024. 9. 21. 16:40
반응형

1. Thread:

  • 명시적 스레드 관리: Thread 클래스를 사용하면 명시적으로 새로운 스레드를 생성하고 작업을 처리할 수 있습니다.
  • 오래된 방식: Thread는 기본적인 스레드 관리 기능을 제공하지만, 직접적인 스레드 생성 및 관리가 필요하므로 복잡한 코드가 될 수 있습니다.
  • 스레드 풀 미사용: Thread는 **스레드 풀(Thread Pool)**을 사용하지 않으며, 매번 새로운 스레드를 생성합니다. 이는 자원 관리 측면에서 비효율적일 수 있습니다.
Thread t = new Thread(() => DoSomething());
t.Start();

 

 

 

2. Task:

  • 고수준 비동기 프로그래밍: Task는 .NET에서 비동기 작업을 쉽게 관리할 수 있도록 도와주는 고수준의 비동기 처리 방식입니다.
  • 스레드 풀 사용: Task.Run은 스레드 풀을 사용하여 효율적으로 스레드를 관리하며, 자원 관리에 유리합니다.
  • 코드 간결성: async/await와 결합하여 비동기 코드를 매우 간결하고 읽기 쉽게 작성할 수 있습니다.
  • 반환값 지원: Task는 반환값을 가질 수 있으며, 작업의 완료 상태와 결과를 추적할 수 있습니다.
  • 비동기 흐름: Task는 주로 비동기 흐름에서 사용되며, await를 통해 호출하는 스레드를 차단하지 않으면서 작업이 완료되길 기다릴 수 있습니다.
 
 
 
 

3. 주요 차이점:

  • 스레드 풀: Task는 스레드 풀을 활용하여 자원을 더 효율적으로 관리하고 성능을 향상시킵니다. 반면, Thread는 매번 새로운 스레드를 생성합니다.
  • 비동기 처리 지원: Task는 비동기 작업을 쉽게 관리할 수 있으며, async/await 패턴과 결합하여 매우 강력한 비동기 프로그램을 작성할 수 있습니다.
  • 코드 복잡성: Thread는 명시적 스레드 관리를 해야 하므로 더 복잡한 코드가 필요하지만, Task는 보다 간결하고 직관적인 코드 작성을 지원합니다.
728x90

'Programming > C# - Window' 카테고리의 다른 글

C#/ Dispatcher(디스패처)에 관해  (0) 2024.09.21
C#/ 파일 프로세스 실행  (1) 2024.09.20
C#/ try-catch문과 using문 비교  (1) 2024.09.20
C#/ WPF 4. 기본 wpf 다루기  (0) 2024.09.20
C#/ WPF 3. 관리자 권한 사용  (1) 2024.09.20