Windowsを使用したことのある人は、プログラムが応答しないというシステムメッセージをときどき見たことがありますが、Windowsはそれをどの程度正確に知っていますか?今日のスーパーユーザーのQ&A投稿には、困惑した読者の質問に対する答えがあります。
今日の質疑応答セッションは、コミュニティ主導のQ&AWebサイトのグループであるStackExchangeの下位区分であるSuperUserの好意で行われます。
写真提供: マティアス・リップ(Flickr) 。
質問
スーパーユーザーリーダーのArunPrasanthは、プログラムが応答していないことをWindowsがどのように認識しているかを知りたいと考えています。
プログラムが応答していないかどうかをWindowsはどのように知るのですか?実行中のすべてのアプリケーションを常にポーリングしていますか?
プログラムが応答していないかどうかをWindowsはどのように認識しますか?
答え
スーパーユーザーの寄稿者であるラチェットフリークが私たちに答えを持っています:
アプリケーションは、Windowsが提供するキューからイベントを取得します。たとえば、長い計算を実行するなど、アプリケーションがイベントキューをしばらく(5秒間)ポーリングしない場合、Windowsはアプリケーションがハングしていると見なし、ユーザーに警告します。
これを回避するには、アプリケーションはコストのかかる計算をワーカースレッドにプッシュするか、処理を分割して、キューが定期的にポーリングされるようにする必要があります。
説明に追加するものがありますか?コメントで音を立ててください。他の技術に精通したStackExchangeユーザーからの回答をもっと読みたいですか? ここで完全なディスカッションスレッドをチェックしてください 。