2016-06-16 7 views
1

私は質問に答えるつもりです、教授が私たちを目的としました。スレッドの中断状態の利点は?

スレッドには通常、実行中、準備完了、ブロック済みの状態があります。プロセスのアドレス空間で使用可能なメモリより多くのメモリを必要とするより多くのスレッドを許可することで、プロセッサ使用率を最大にするSuspended状態を追加するとします。もしそうなら、理由を説明し、私たちが得たベネットを説明してください。そうでない場合は、なぜそうしないのか説明してください。

サスペンド状態は、同期がちょうどひどい経験であるため、私にはかなりばかげているようです。サスペンドしたい場合は、ブロックされた状態になることはおそらく10倍の良いアイデアです。そして、その上にプロセッサーが既に利用されているわけではありません。なぜなら、あるスレッドがブロックされ、別のスレッドがスケジュールされてしまうからです。あなたが明示的に入るサスペンド状態にすることによって、あなたはかなりスケジューリングを手動で制御しています。私はそれがどんな利益をもたらすのか本当に混乱しています。何か案は?

答えて

0

私はあなたに完全に同意します。スレッドの開始点の同期に制限されていない限り、同期はできません。サスペンド状態のスレッドを作成し、親プロセスがフラグを立てた場合にのみスレッドを続行できるようにします。しかし、これとは別に、中断されたスレッドモデルでは同期は不可能です。
私はブロッキングがサスペンドされたキューのスレッドをハングアップするよりも優れていると思います。プロセッサはすでに完全に利用されています。スレッドを何らかの特別な目的のために使用するまでは、スレッドを中断状態にすることは本当に有益ではありません。 デバッガは、スレッドの状態を変更/ブレーク/トレースできるように、中断されたスレッド状態を使用します。これは、サスペンド状態の使用方法を正確に示しています。
あなたは正しいです、あなたは多少手動でスレッドのスケジューリングプロセスを制御しています。それはひどい考えです。

関連する問題