반응형
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 |