2016-10-17 15 views
0

タイトルはかなりよく私の質問を要約します。 「どのような状況でスレッドを使用すると、逐次プログラムに利益をもたらすでしょうか?どのような状況では、スレッドを使用するとシーケンシャルプログラムに役立つでしょうか?

+1

あなたの質問は非常に広いです。一般的な答えは:「並行して実行できる逐次プログラムにコードのブロックがあると、利益が得られる」しかし、それはテキストの多くの段落に拡張することができます。 –

答えて

0

多くの理由とその少し複雑です。だから私は可能な限り貴重なものにしようとします。

すべてのプログラマは並列化できますが、時にはその価値がありません。

マルチスレッドの大きな利点は、すべてのコアの使用です。これにより、パフォーマンスが向上する可能性があります。最適なケースでは、問題に取り組んでいる2つのコアを持つと、実行速度が2倍になります。

一般的なオーバーヘッド:しかし、現実にはこのスピードアップがスレッドからオーバーヘッドの量によってreduzedされます

  • スレッド開始/無視するに
  • 通信/同期

を停止しますスタート・ストップオーバーヘッド、スレッドの寿命はできるだけ大きくする必要があります。

通信/同期部分が主な問題です。ここでは非常に複雑です。つまり、スレッド間の通信を避ける/減らしてください。各スレッドは可能な限り分離して動作する必要があります。

は基本的にオーバーヘッドと並列性の間のトレードオフです。 キー質問は次のとおりです。

  • パフォーマンスに問題はありますか?
  • マルチコアにアクセスできますか?
  • あなたは、スタック管理のしやすさが必要です( - > 異なるスレッド上の各TCPコネクション)
  • あなたは (パラレル対シーケンシャル)複数の解決策をテストして喜んでいますか?詳細については、

https://en.wikipedia.org/wiki/Gustafson%27s_law

関連する問題