> 백엔드 개발 > C++ > Task.Start/Wait 및 Async/Await: 장기 실행 작업 처리의 차이점은 무엇입니까?

Task.Start/Wait 및 Async/Await: 장기 실행 작업 처리의 차이점은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-10 22:36:41
원래의
264명이 탐색했습니다.

Task.Start/Wait vs. Async/Await:  What's the Difference in Handling Long-Running Operations?

Task.Start/Wait과 Async/Await: 시간이 많이 걸리는 작업 처리의 차이점

멀티 스레딩 및 비동기 프로그래밍 세계에서는 Task.Start/Wait 메서드와 async/await 메서드의 차이점을 이해하는 것이 중요합니다. 이 두 기술은 시간이 많이 걸리는 작업을 처리하기 위한 서로 다른 메커니즘을 제공하여 애플리케이션 응답성과 성능을 향상시킵니다.

작업 시작/대기: 동기 차단

Task.Start/Wait 메서드에서 Task.Factory.StartNew(Action)을 사용하여 새 작업을 생성하고 시간이 많이 걸리는 작업을 수행할 대리자를 할당합니다. 그런 다음 t.Wait() 호출은 작업 실행이 완료될 때까지 호출 스레드를 강제로 기다리게 합니다.

다음 코드 조각을 고려하세요.

<code class="language-csharp">public void MyMethod()
{
  Task t = Task.Factory.StartNew(DoSomethingThatTakesTime);
  t.Wait();
  UpdateLabelToSayItsComplete();
}</code>
로그인 후 복사

이 예에서 호출 스레드는 DoSomethingThatTakesTime() 작업이 완료된 후에만 UpdateLabelToSayItsComplete() 메서드를 실행합니다. 이 메서드는 호출 스레드의 처리를 차단하므로 다른 작업의 실행이 지연됩니다.

비동기/대기: 비동기 비차단

반대로 async/await 메서드는 비동기 프로그래밍을 사용하여 호출 스레드를 차단하지 않고 시간이 많이 걸리는 작업을 수행합니다. async void 키워드를 사용하면 메소드가 비동기화될 수 있으며 작업이 완료될 때까지 wait 연산자가 호출자에게 제어권을 넘겨줍니다.

다음은 async/await를 사용하여 업데이트된 코드 조각입니다.

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

이 경우 Wait result 문은 DoSomethingThatTakesTime() 작업이 완료될 때까지 MyMethod() 메서드의 실행을 일시 중단합니다. 동시에 호출 스레드는 다른 작업을 자유롭게 수행할 수 있습니다.

유추에 따른 이해의 차이

레스토랑 시나리오를 상상해 보세요. 웨이터에게 주문한 다음 수프가 도착할 때까지 친구를 무시하도록 선택하거나(Task.Wait), 친구와 대화하고 채팅이 일시 중지된 동안 웨이터가 수프를 배달하도록 합니다(비동기/ 기다리다).

위 내용은 Task.Start/Wait 및 Async/Await: 장기 실행 작업 처리의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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