ホームページ > バックエンド開発 > C++ > 非同期メソッド: Task.Run とネイティブ非同期 - いつどちらを使用する必要がありますか?

非同期メソッド: Task.Run とネイティブ非同期 - いつどちらを使用する必要がありますか?

Susan Sarandon
リリース: 2025-01-03 17:05:40
オリジナル
620 人が閲覧しました

Async Methods: Task.Run vs. Native Async - When Should I Use Which?

非同期メソッド: Task.Run とネイティブ Async

非同期プログラミングを使用する場合、コードの非同期実行と待機可能なメソッドの作成の違いを理解することが重要です。

Task.Run および非同期実行:

Task.Run はバックグラウンド スレッドでコードを実行し、非同期のように見えます。ただし、このアプローチでは真の非同期メソッドは作成されません。呼び出し元のスレッドは、タスクが完了するまでブロックされたままになります。

例:

private async Task DoWork2Async()
{
    Task.Run(() =>
    {
        int result = 1 + 2;
    });
}
ログイン後にコピー

この例では、呼び出し元のスレッドはブロックされたままであるため、DoWork2Async は真の非同期ではありません。タスクはバックグラウンド スレッドで実行されます。

ネイティブ非同期メソッド:

ネイティブの非同期メソッドは、async キーワードを使用して宣言され、実行が開始される前に呼び出し元に制御を渡すことができます。呼び出し元は、非同期操作が完了するまで待機している間、他のコードの実行を続けることができます。

例:

private async Task DoWork1Async()
{
    int result = 1 + 2;
}
ログイン後にコピー

この例では、DoWork1Async はネイティブの非同期メソッドです。 。それを待つと、呼び出しスレッドが解放され、非同期操作が完了するまで他のコードを実行できるようになります。

結論:

awaitable 非同期メソッドでは、Task.Run で同期コードをラップせずに async キーワードを使用する必要があります。これにより、非同期操作の実行中に呼び出しスレッドがブロックされない、真の非同期実行が可能になります。

以上が非同期メソッド: Task.Run とネイティブ非同期 - いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート