なぜスレッドを使用するのですか?
(これは、使用するプラットフォーム スイートとは無関係であることに注意してください。)
パフォーマンス
想像してみてください。買い物に行くときに、かごにたくさんの物が入っていないとします。あなたの前に買い物に行く人が 10 人ほどいて、その多くは買い物かごにもっとたくさんの物を入れています。別のレーンを開くのとは対照的に、チェックアウトレーンが処理しなければならないほど多くのものを持っていない場合、処理に時間がかかります.
スレッドは、店舗のチェックアウト レーンに似ています。それらが多ければ多いほど、実行できる操作が増えます。
コンピューターがますます高速化するのをやめ、より多くのコアをチップに搭載することに重点が置かれるにつれて、ソフトウェア エンジニアとして、アルゴリズムとアプリケーションをハードウェアの使用に合わせてより効率的にする方法を考え出す必要があります。マルチスレッドは 1 つの方法です。大きな問題を取り、それを小さなサブ問題に分割して後で再結合するアルゴリズムを設計および実装できます。
なぜスレッドを使用しないのですか?
シングルコアシステム
スレッド化にはオーバーヘッドがあり、これは軽量プロセスのコンテキスト切り替えとスピンアップにあります。コアが 1 つしかない場合は、実際のデータを処理する代わりに、オーバーヘッドの処理により多くの時間を費やすことになります。
スレッドが多すぎるのは悪いことです
私はチェックアウト レーンのアナロジーを共有しました。より多くのレーンをオープンにすることは一般的には良いことですが、レーンをオープンにすることを正当化するのに十分な作業がない場合、それらはリソースとクロック サイクルを無駄にします。実行しなければならない作業量と必要なスレッド数のバランスを取ることが重要です。