処理を複数のスレッドに分解する 2 つの高度な方法があります。データの並列処理では、複数のデータ要素に同じ処理が並列で実行されます。一般的な例としてループの評価があります。この場合、各スレッドは一部のループ範囲で処理されます。データの並列処理の利点はループに十分な作業がある場合にコア カウントが高くなることで、欠点は作業負荷のタイプが制限されることです。
タスクの並列処理では、計算スレッド、UI スレッド、グラフィック スレッドなどさまざまなタスクが並列で実行されます。利点はCPU と GPU などシステムの異なる部分を並列で処理できることで、欠点は拡張性が制限されることです。通常タスクの数が非常に少なくなり、高価にはなりません。
適切にスレッド化しれたアプリケーションにはデータとタスクの両方の並列処理があり、さらに 2 つを同時に実行できる場合もあります。また、拡張性のある設計のため、将来的にプロセッサのコア カウントが増加した場合にもアプリケーションで自動的に活用できます。