> 백엔드 개발 > C++ > C#의 Async/Await: 기다리거나 기다리지 않을 것인가? 실행에 미치는 영향

C#의 Async/Await: 기다리거나 기다리지 않을 것인가? 실행에 미치는 영향

Susan Sarandon
풀어 주다: 2025-01-12 13:22:43
원래의
972명이 탐색했습니다.

Async/Await in C#:  To Await or Not to Await?  The Impact on Execution

C#의 Async/Await 사용법: 기다릴 것인가, 기다리지 않을 것인가? 실행에 미치는 영향

다음 코드에는 Callee 메서드에 대한 6개의 호출이 포함되어 있으며 각각 다른 방식으로 실행됩니다.

  1. 비동기 호출(Fire-and-forget): Callee 메서드가 비동기적으로 호출되며 기다리지 않습니다. 메서드는 백그라운드에서 비동기적으로 실행되며 호출 메서드는 즉시 실행을 계속합니다.

  2. 비동기 호출 대기: Callee 메서드가 호출되고 await을 사용하여 완료될 때까지 기다립니다. 호출 메서드는 후속 코드 실행을 계속하기 전에 Callee 메서드가 완료될 때까지 기다립니다. Callee 메서드 이후의 코드를 실행하기 전에 메서드가 완료되었는지 확인하세요.

  3. Task.Run을 사용한 비동기 호출: Callee 메서드는 Task.Run을 사용하여 시작되지만 결과를 기다리지 않습니다. 사례 1과 마찬가지로 Callee 메서드는 백그라운드에서 실행되고 호출된 메서드는 즉시 실행을 계속합니다.

  4. Task.Run을 사용하고 비동기 호출을 기다립니다. Callee 메서드는 Task.Run을 사용하여 시작되고 결과를 기다립니다. 이는 호출 메서드가 계속하기 전에 Callee 메서드가 완료될 때까지 기다리는 경우 2와 동일합니다.

  5. Task.Run 및 async를 사용한 비동기 호출: Callee 메서드가 async으로 선언된다는 점을 제외하면 사례 3과 동일합니다. async 키워드를 사용하면 Task.Run로 래핑된 경우에도 메서드를 비동기적으로 호출할 수 있습니다.

  6. Task.Run 및 async를 사용하고 비동기 호출을 기다립니다. Callee 메서드가 async으로 선언된다는 점을 제외하면 사례 4와 동일합니다. 마찬가지로 async 키워드는 Task.Run로 래핑된 경우에도 Wait 메서드를 허용합니다.

요약: 이러한 호출의 기본 논리는 다음과 같습니다.

  • 사례 1 및 3: Callee 메서드는 백그라운드 스레드에서 실행되며 호출 메서드는 즉시 실행을 계속합니다.

  • 사례 2 및 4: 호출 메서드는 후속 코드를 실행하기 전에 Callee 메서드가 완료될 때까지 기다립니다.

  • 사례 5 및 6: 추가 병렬 처리를 위해 Task.Run을 사용하는 비동기 호출입니다. 그러나 async 키워드를 사용하면 필요에 따라 기다릴 수 있습니다.

위 내용은 C#의 Async/Await: 기다리거나 기다리지 않을 것인가? 실행에 미치는 영향의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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