Programming/C/C++/C#

C# Thread.Sleep vs Task.Delay 차이

휘탱 2017. 12. 21. 23:15

Thread.Sleep과 Task.Delay는 C#에서 시간 동안 실행을 지연시키는 두 가지 다른 방법입니다. 각각의 동작 방식과 사용 사례에 대해 알아보겠습니다.

Thread.Sleep(동기)

  • Thread.Sleep 메소드는 현재 실행 중인 스레드를 지정된 시간 동안 차단(block)합니다.
  • 이 메소드는 주어진 시간 동안 스레드를 정지시켜 시스템 리소스를 점유하게 만듭니다.
  • Thread.Sleep 는 주로 레거시 코드에서 찾을 수 있으며, 새로운 개발에서는 권장되지 않습니다.

Task.Delay(비동기)

  • Task.Delay 메소드는 비동기적으로 지연을 만들어 실행 흐름을 차단하지 않습니다.
  • 이 메소드는 주어진 시간 동안 대기 상태로 전환되며, 다른 작업이 실행될 수 있도록 합니다.
  • Task.Delay 는 비동기 프로그래밍의 콘텍스트에서 권장되며, 특히 C# 5.0이상에서 async와 await 키워드와 함께 사용됩니다.

사용 사례

  • Thread.Sleep은 주로 디버깅 또는 레거시 코드에서 찾을 수 있습니다. 그러나 새로운 개발에서는 성능과 리소스 관리 문제로 인해 권장되지 않습니다.
  • Task.Delay는 비동기 작업의 일부로 일부 지연을 만들거나, 네트워크 통신이나 파일 I/O와 같은 비동기 작업을 수행할 때 유용합니다. 비동기 방식으로 작동하기 때문에, 시스템 리소스를 보다 효율적으로 활용할 수 있습니다.

이러한 차이점으로 인해, Task.Delay는 모던 C# 애플리케이션에서 Thread.Sleep보다 더 나은 선택이 될 수 있습니다.

반응형