ホームページ >バックエンド開発 >C++ >task.Result vs. task.getAwaiter()。getResult():同期実行と例外処理の違いは何ですか?

task.Result vs. task.getAwaiter()。getResult():同期実行と例外処理の違いは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-24 11:37:09233ブラウズ

Task.Result vs. Task.GetAwaiter().GetResult(): What's the Difference in Synchronous Execution and Exception Handling?

非同期メソッドを処理する場合、同期して実行する必要がある場合があります。ただし、同期実行には2つの一般的な方法があります:

には、それらの間に重要な違いがあります。

Task.Result task.wait and task.getAwaiter()getResult() Task.GetAwaiter().GetResult() および

両方とも、非同期タスクの同期実行を許可します。ただし、それらの異常な処理メカニズムは異なります。

異常をに詰め込み、は元の異常を直接投げます。

提案Task.WaitTask.GetAwaiter().GetResult() Task.Wait元の異常を直接処理するために、AggregateExceptionよりも優れています。ただし、両方の方法は可能な限り回避する必要がありますが、最初の2つは死んだロックと糸プールのリソースの消耗を引き起こす可能性があるため、Task.GetAwaiter().GetResult()を好むはずです。

さまざまな理由

の異常な治療の違いは、Microsoftの厳格な互換性要件に由来しています。既存のコードの破壊を避けるために、Task.GetAwaiter().GetResult()は元のブロッキング動作を維持し、異常をTask.Waitに詰め込みます。 async/await

異常な普及を直接引き起こすには、

を使用できます。 は、実行のブロックをブロックする代わりにタスクエラーを確認することに注意してください。

以上がtask.Result vs. task.getAwaiter()。getResult():同期実行と例外処理の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。