> 백엔드 개발 > C++ > Task.Start/Wait 대 Async/Await: 비동기 프로그래밍의 주요 차이점은 무엇입니까?

Task.Start/Wait 대 Async/Await: 비동기 프로그래밍의 주요 차이점은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-10 22:23:46
원래의
336명이 탐색했습니다.

Task.Start/Wait vs. Async/Await: What's the Key Difference in Asynchronous Programming?

Task.Start/Wait 대 Async/Await: 차이점은 무엇인가요?

비동기 프로그래밍의 세계에서는 Task.Start/Wait를 사용하는 동기 방법과 Async/Await를 사용하는 비동기 방법의 차이점을 이해하는 것이 중요합니다.

다음 코드 조각을 참조하세요.

<code class="language-csharp">public void MyMethod()
{
  Task t = Task.Factory.StartNew(DoSomethingThatTakesTime);
  t.Wait();
  UpdateLabelToSayItsComplete();
}

public async void MyMethod()
{
  var result = Task.Factory.StartNew(DoSomethingThatTakesTime);
  await result;
  UpdateLabelToSayItsComplete();
}</code>
로그인 후 복사

첫 번째 코드 조각에서는 전통적인 Task.Start/Wait 동기화 방법을 사용합니다. 작동 방식은 다음과 같습니다.

  • Task.Factory.StartNew를 사용하여 새 작업을 생성하고 DoSomethingThatTakesTime 메서드에서 시간이 많이 걸리는 작업을 수행합니다.
  • 작업에서 Wait() 메서드를 호출하여 현재 스레드를 차단합니다. 이는 프로그램이 작업이 완료될 때까지 대기한다는 의미입니다.

반대로, 두 번째 코드 조각은 Async/Await를 사용하는 비동기 접근 방식을 보여줍니다.

  • 다시 이전과 같이 작업을 시작합니다.
  • 그러나 스레드를 차단하기 위해 Wait()를 사용하는 대신 wait 키워드를 사용합니다. 이로 인해 백그라운드 작업이 실행되는 동안 현재 스레드가 계속 실행됩니다.
  • 작업이 완료되면 메시지가 자동으로 메시지 대기열에 추가되어 대기 다음의 코드 섹션이 실행을 재개해야 함을 나타냅니다.

이 두 방법의 주요 차이점은 작업이 실행되는 동안 스레드의 동작입니다. Task.Start/Wait를 사용하면 스레드가 차단되고 다른 이벤트에 응답할 수 없습니다. 이와 대조적으로 Async/Await를 사용하면 스레드가 응답을 기다리는 동안 다른 작업을 수행할 수 있습니다.

식당에서 점심을 주문한다고 상상해 보세요. 식사하기 전에 옆에 앉은 사람을 무시하는 것처럼 Task.Start/Wait를 사용하세요. Async/Await를 사용하면 수프가 나올 때까지 기다리는 동안 친구와 대화를 계속하는 것과 같습니다. 백그라운드 작업은 계속 진행 중이지만 스레드는 결과를 기다리는 동안 다른 작업을 수행할 수 있습니다.

위 내용은 Task.Start/Wait 대 Async/Await: 비동기 프로그래밍의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿