マルチスレッドが適さないのはどのような場合ですか? [closed] 質問する

マルチスレッドが適さないのはどのような場合ですか? [closed] 質問する

私は最近、イーサネットとシリアル経由でメッセージを送受信するアプリケーションに取り組んでいました。追加DIOディスクリートの監視。私は、

「メッセージ処理に関係するメインスレッドを中断する理由はないので、別のスレッドDIO を監視します。」

しかし、この決定は貧しいシリアル メッセージの送信と受信の間で、メイン スレッドが中断されることがあります。この中断によってタイミングが乱れ、残念ながらメッセージが (永久に) 失われます。

DIOを監視する別の方法を見つけました別のスレッドを使用せずにイーサネットとシリアル通信は正常な機能に復元されました。

しかし、この大失態は私に考えさせるものだった。いつ、どのような一般的なガイドラインがあるのでしょうか?ないマルチスレッドを使用することをお勧めしますか? また、マルチスレッドの使用が適切ではない状況の例を他にご存知の方はいらっしゃいますか?

**編集:あなたのコメントとインターネットで情報を探した結果、私はブログ記事を書きました。マルチスレッドが適切でないのはどのような場合ですか?

ベストアンサー1

  1. シングル プロセッサ マシンとデスクトップ アプリケーションでは、マルチ スレッドを使用してアプリをフリーズさせないようにしますが、それ以外には何の役にも立ちません。
  2. シングルプロセッサ サーバーと Web ベースのアプリでは、Web サーバーがほとんどの処理を処理するため、マルチスレッドは必要ありません。
  3. マルチプロセッサ マシンとデスクトップ アプリでは、マルチスレッドと並列プログラミングを使用することをお勧めします。プロセッサの数と同じ数のスレッドを作成します。
  4. マルチプロセッサ サーバーと Web ベースのアプリでは、Web サーバーが処理するため、マルチスレッドは必要ありません。

全体として、デスクトップアプリのフリーズ解除やその他の一般的な回答以外の目的で複数のスレッドを使用すると、アプリが遅くなります。もしスレッドが互いに割り込むため、コアが 1 つのマシンになります。

なぜでしょうか? ハードウェア スイッチのためです。ハードウェアがスレッド間を全体的に切り替えるには時間がかかります。マルチコア ボックスでは、コアごとに 1 つのスレッドを使用すると、パフォーマンスが大幅に向上します。

おすすめ記事