>백엔드 개발 >C++ >Task.Run() 대 Task.Factory.StartNew(): 언제 어느 것을 사용해야 합니까?

Task.Run() 대 Task.Factory.StartNew(): 언제 어느 것을 사용해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-12 08:58:41667검색

Task.Run() vs. Task.Factory.StartNew(): When Should You Use Which?

.NET 비동기 프로그래밍: Task.Run()과 Task.Factory.StartNew() 비교

.NET 비동기 프로그래밍에서는 새로운 작업을 생성하고 시작해야 하는 경우가 많습니다. 이를 위해 .NET 프레임워크는 일반적으로 사용되는 두 가지 메서드인 Task.Run()Task.Factory.StartNew()를 제공합니다. 둘 다 동일한 기본 목표를 달성하지만 기능과 사용 사례는 다릅니다.

Task.Factory.StartNew()

Task.Factory.StartNew()새로운 작업의 동작을 사용자 정의할 수 있는 다양한 옵션을 제공하여 기능이 더욱 풍부해졌습니다. 허용되는 주요 매개변수 중 일부는 다음과 같습니다.

  • Action/Func: 새 작업에서 실행되는 위임입니다.
  • CancellationToken: 작업을 중단하는 데 사용할 수 있는 취소 토큰입니다.
  • TaskCreationOptions: 생성 옵션, 스케줄러 등 작업 동작을 제어하는 ​​옵션 집합입니다.
  • TaskScheduler: 작업을 실행할 스케줄러입니다.

이러한 유연성을 통해 장기 실행 작업 생성, 특정 스레드에서 작업 실행 등 특정 요구 사항에 맞게 작업을 맞춤화할 수 있습니다.

Task.Run()

Task.Run()은 .NET 4.5에 도입된 Task.Factory.StartNew()의 단순화된 버전입니다. 다음 설정을 사용하여 새 작업에 대한 기본 구성을 제공합니다.

  • CancellationToken.None: 취소 토큰을 사용하지 않습니다.
  • TaskCreationOptions.DenyChildAttach: 새 작업으로 생성된 하위 작업은 원래 작업에 첨부할 수 없습니다.
  • TaskScheduler.Default: 작업은 일반적으로 스레드 풀을 사용하여 기본 작업 스케줄러에서 실행됩니다.

은 특별한 사용자 정의가 필요하지 않고 기본 설정을 사용하여 새 작업을 빠르게 시작할 때 편리한 선택입니다. Task.Run()

Task.Run()과 Task.Factory.StartNew()를 사용하는 경우

일반적으로 새 작업의 동작을 맞춤설정해야 할 때

를 사용하세요. 여기에는 다음 시나리오가 포함됩니다. Task.Factory.StartNew()

    장기 실행 작업 만들기
  • 구체적인 취소 정책 지정
  • 특정 스레드 또는 스레드 풀에서 작업 실행
사용자 정의가 필요하지 않고 기본 설정으로 새 작업을 만드는 경우

를 사용하세요. Task.Run()는 추가 구성 없이 작업 생성을 단순화하는 단축키입니다. Task.Run()

위 내용은 Task.Run() 대 Task.Factory.StartNew(): 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.