.NETフレームワークは、タスクとスレッドの合併症の2つのタイプを提供しました。どちらも非同期実行コードに使用できますが、それらの間には基本的な違いがあり、特定のシーンの適用性に影響します。
タスクはより高いレベルの概念です。つまり、非同期操作と将来の結果が約束されています。タスクは、スレッドプールによって管理され、スレッドの作成に関連するオーバーヘッドを削減します。スレッドとは異なり、タスクには専用のスタックがなく、スレッドプールの同じスレッドの他のタスクのリソースを共有していません。
タスクの代わりにスレッドを使用するとき(その逆)次の場合には、スレッドを使用してください。 スレッドの作成と実行を明示的に制御する必要があります。長期操作が必要であり、特別なスレッドを長時間占有します。 スレッドのローカルストレージを管理するか、オペレーティングシステムと直接通信する必要があります。
次の状況では、タスクを使用してください。
は、より高いレベルの抽象化を使用する傾向があり、スレッドプール管理リソースが割り当てられることを願っています。タスクとスレッドの違いを理解することの違いは、.NETコードの適切な並行性メカニズムを選択するために不可欠です。より高いレベルのタスク抽象化を使用するために可能な限り、同時性管理を簡素化し、オーバーヘッドを削減し、コードのメンテナンスを増やすことができます。ただし、スレッドクラスは、明示的なスレッドコントロールまたは専用のスレッド関連関数のシーンに必要な柔軟性を提供します。
以上が.NET におけるタスクとスレッド: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。