2009-04-09 9 views
0

アプリケーション実行ループにイベントがない場合、スレッドがスリープしなければならない理由を理解できません。これでエネルギーやメモリが節約できますか?イベントが発生していない場合、メイン実行ループは実行スレッドをスリープ状態にするのはなぜですか?

ソース入力からのイベントが発生すると、このイベントを処理するために再びスレッドを起動します。その後、処理待ちのキューにイベントがなくなると、再びスリープ状態になります。

誰かがこの睡眠の問題について良い説明をしていますか?

答えて

2

これは問題ではありません。それはいいことです。メインスレッドは他に何をしていますか? UIイベントが発生したときにUIの「スナップ」を軽減する、長時間実行されるタスクを処理すべきではありません。

イベントが到着するまでタイトループする必要はありませんそうでなければ他のアプリケーションによって顕著に使用される可能性がある。

眠っている(またはむしろ待っている)のはまさにあなたが望んでいることです - それで、役に立つことがすぐに起こりますが、そうでなければシステムには影響しません。

2

スリープスレッドは、OSスケジューラ(CPU時間をスレッドに割り当てるサブシステム)が他のスレッドを実行できるようにします。

2

他の人は言ったように、スレッドをスリープ状態にすると、他のスレッドが実行されます。

iPhoneを参照している可能性があるので、これを追加します(他の多くの質問に基づいています)。これは、他のスレッドを実行する必要がなくても、CPUの消費電力がアイドル。

関連する問題