単一のCPUで「並列コーディング」と「マルチスレッドコーディング」を同じ意味で使用できますか?
私は両方の経験があまりありませんが、コーディング スタイルを上記のいずれかにシフトしたいと考えています。
現在、多くのシングルスレッドアプリケーションが時代遅れになっていることがわかったので、キャリアの見通しとして将来のソフトウェア業界にとってどちらが良いでしょうか?
単一のCPUで「並列コーディング」と「マルチスレッドコーディング」を同じ意味で使用できますか?
私は両方の経験があまりありませんが、コーディング スタイルを上記のいずれかにシフトしたいと考えています。
現在、多くのシングルスレッドアプリケーションが時代遅れになっていることがわかったので、キャリアの見通しとして将来のソフトウェア業界にとってどちらが良いでしょうか?
並列コーディングとは、複数のアクションを並行して(同時に)実行するという概念です。
単一のプロセッサでマルチスレッドを実行すると、並列に実行されているように見えます。舞台裏では、スレッドの優先順位に応じて、プロセッサがスレッドを切り替えています。
複数のプロセッサ コアでのマルチスレッドは、真に並列です。各マイクロプロセッサーは単一のスレッドを実行します。その結果、複数の並行タスクが同時に発生します。
複数のスレッドで並列操作を実行できるため、質問は少し混乱しますが、すべてのマルチスレッド アプリケーションが並列コンピューティングを使用しているわけではありません。並列コードでは、通常、一連のデータを消費して結果を非同期に返す多くの「ワーカー」があります。ただし、マルチスレッドは、GUI などのより広い範囲で使用され、I/O やネットワークをブロックします。
管理は OS がスレッドとプロセスをどのように処理できるかに依存するため、1 つまたは複数の CPU を使用してもあまり変わりません。
マルチスレッドはあらゆる場所で役立ちます。並列は日常的なコンピューティング パラダイムではないため、将来のキャリアの「ニッチ」になる可能性があります。
.NET 4.0 で見たいくつかのデモでは、並列コードの変更は、スレッドを実行するよりも簡単なようです。並列処理をサポートするための「For ループ」などの新しい構文があります。だから違いがあります。
将来的には両方を行うことになると思いますが、Parallel サポートの方が優れていて簡単になると思います。バックグラウンド操作などにはまだスレッドが必要です。
「並列コーディング」が何だと思うかわかりませんが、CPUによって並列に実行されるコードを生成することを指していると理解している並列コーディングであるため、マルチスレッドコードはその説明に該当します。
そのようにして、明らかにそれらを交換可能に使用できます (一方が他方の中に入るように)。
それでも、ゆっくりと基本から学び始めることをお勧めします。マルチスレッド化が重要になっている理由、プロセス、スレッド、ファイバーの違い、それらの同期方法などを理解してください。
並列コーディングは、逐次コーディングと比較すると非常に複雑であるため、準備が必要です。また、ただそれに突入しないでください。1 つではなく 3 つのスレッドを使用するからといって、プログラムが高速になるわけではなく、遅くなる可能性さえあります。方法と理由を理解する必要があります。すべてのものを並列化できるわけではありません。