>백엔드 개발 >C++ >UI 스레드를 차단하지 않고`async`와`await '는 어떻게 비동기 작업을 관리합니까?

UI 스레드를 차단하지 않고`async`와`await '는 어떻게 비동기 작업을 관리합니까?

Linda Hamilton
Linda Hamilton원래의
2025-02-02 18:41:09735검색

How Do `async` and `await` Manage Asynchronous Operations Without Blocking the UI Thread?
비동기 및 대기 : UI를 차단하지 않고 비동기 프로그래밍을 단순화합니다.

는 비동기 프로그래밍의 강력한 도구로 코드 가독성 및 유지 관리 가능성을 향상시킵니다. 그러나 그들의 작동은 기존의 배경 스레드와 크게 다릅니다. 그들의 행동을 명확히하자. <:>이 코드를 고려하십시오 :

키워드는 컴파일러에게 상태 머신을 생성하도록 신호를 보냅니다. 이 기계는 비동기 작업의 수명주기를 관리합니다. 는 비동기 작업을 시작합니다 (). 결정적으로, 는 를 사용하기 때문에 메소드는 UI 스레드를 차단하지 않습니다. 섹션은 동시에 실행할 수 있습니다 async (표시되지는 않지만 를 포함한다고 가정)는 5 초 지연을 도입합니다. 그러나 는 발신자에게 제어를 다시 생성합니다. UI는 반응성이 유지됩니다. 가 완료되면 스레드 풀 스레드가 왼쪽에서 await를 재개하고 결과를 에 할당합니다. 와 달리

, 및

는 새 스레드를 생성하지 마십시오. 대신 스레드 풀과 상태 기계를 활용하여 비동기 작업을 효율적으로 관리하여 UI 동결을 방지하고 동시 실행을 가능하게합니다. 이것은 비동기 프로그래밍에 대한 더 깨끗하고 효율적인 접근 방식을 제공합니다.
<code class="language-csharp">private async void button1_Click(object sender, EventArgs e)
{
    Task<int> access = DoSomethingAsync();
    // Other UI-responsive tasks here

    int a = 1; // This executes immediately, not after the 5-second delay

    int x = await access; // Execution pauses here until DoSomethingAsync completes
}</code>

위 내용은 UI 스레드를 차단하지 않고`async`와`await '는 어떻게 비동기 작업을 관리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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