2

イベントとは、何かをクリックすると、コードがすぐに実行されることです。

ポーリングとは、アプリケーションがマウスボタンが押されているかどうかを常にチェックし、特定の場所で押されている場合はコードが実行されることです。

イベントは実際にコンピューティングに存在しますか、それともすべてポーリングに基づいて構築されたレイヤーですか?

4

3 に答える 3

3

これは複雑な質問であり、その答えは (抽象化レイヤーで) どこまで回答するかによって異なります。最終的に、USB キーボード デバイスはコンピュータによって 1 ミリ秒に 1 回ポーリングされ、どのキーが押されているかを確認します。この情報は、USB デバイス (コンピューター内) がキーボードからデータのパケットを取得するときに、CPU 割り込みを介してキーボード ドライバーに渡されます。それ以降は、割り込みを使用してプロセスからプロセスへ (GUI フレームワークを介して) データを渡し、最終的にアプリケーションに到達します。

Marc Cohen が回答で述べたように、I/O の完了を通知するために CPU 割り込みも発生します。これは、イベントが発生したかどうかを確認するために (おそらくクロック サイクルごとに 1 回? コンピューター アーキテクチャの経験が豊富な人が答える必要があります)、ハードウェア レベルに到達するまでポーリングを行わないものの例です。

于 2012-09-26T04:58:55.243 に答える
2

ポーリングによってイベントをシミュレートするのは一般的な手法ですが、これは非常に非効率的であり、イベントの解決とポーリングのオーバーヘッドの間にトレードオフがあるというジレンマにつながりますが、それは本当のイベントが存在しないことを意味するわけではありません。

CPU割り込みは、I / O完了などの外部イベントを通知するために発生する可能性があり、ハードウェア層でのイベントの例です。

于 2012-09-26T04:53:46.560 に答える
0

まあ、オペレーティング システムとアプリケーション レベルの両方が、ポーリングではないイベントに依存します。ポーリングは通常、状態を維持できない場合に可能です。ただし、デスクトップ アプリケーションと OS レベルでは、アプリケーションには状態があります。そのため、ポーリングではなく、プロセスにイベントを使用します。

于 2012-09-26T05:01:47.360 に答える