問題タブ [busy-waiting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - ビジーウェイトとポーリングの違いは何ですか?
ポーリングに関するウィキペディアの記事から
コンピューター サイエンスにおけるポーリング (ポーリング操作) は、同期アクティビティとして、クライアント プログラムによって外部デバイスの状態をアクティブにサンプリングすることを指します。ポーリングは、ほとんどの場合、入出力 (I/O) に関して使用され、ポーリング I/O またはソフトウェア駆動 I/O とも呼ばれます。
ポーリングは、ビジー待機ポーリング (ビジー待機) と同義で使用されることがあります。この状況では、I/O 操作が必要な場合、コンピューターは I/O デバイスの状態を確認する以外に何もしません。準備ができた時点でデバイスにアクセスします。つまり、コンピュータはデバイスの準備が整うまで待機します。
ポーリングとは、デバイスの準備が整っているかどうかを繰り返しチェックし、準備が整っていない場合、コンピューターが別のタスクに戻る状況も指します。ビジーウェイトほど CPU サイクルを浪費するわけではありませんが、これは通常、ポーリングや割り込み駆動型 I/O に代わる方法ほど効率的ではありません。
では、スレッドが「条件変数」を使用しない場合、それはデータ変更の「ポーリング」または「ビジー待機」と呼ばれますか?
java - ScheduledExecutorService.shutdown()がCPUを100%使用するのはなぜですか?
私は次の簡単なコードを持っています:
実際、私の実際のコードはそれよりも少し複雑ですが、これらの行で問題を切り分けることができます。コードは基本的に実行可能ファイルを実行するために10秒間待機してから、メインプログラムの終了を通知します。
しかし、10秒間気づいたのですが、私のコアの1つが100%使用されています。
この行にコメントすると:
CPUコアも100%で使用され、メインプログラムもRunnableの前に終了します。
この行にコメントすると:
CPUは適切に使用されていますが、プログラムは終了しません。
前の行の両方にコメントすると、CPUは適切に使用されますが、メインプログラムは終了しません。
- 私のコードに何か問題がありますか?
executor.shutdown();
新しいタスクの送信を無効にするだけでなく、ある種のビジーウェイトを実行していますか?- または、JVMのせいにする必要がありますか?
追加の詳細:
PS:お願いします、私にCountDownLatch
norを使うように頼まないでくださいnewSingleThreadScheduledExecutor
。それは私が尋ねている質問とは関係ありません。ありがとう。
編集:
これがJavaダンプです:
visual-c++ - c++ でのビジー待機またはスレッドを使用した自動化の実装
次の要件で、ハンドラー機器を自動化しようとしています(ロボットがチップを選択してハードウェアプラットフォームに配置します):
1. ハンドラーには 6 つのサイトがあり、ハンドラーがそのサイトにデバイスを配置すると、ハンドラーはエラーコードを返します。
code1 はテスト準備完了、code2 はエラー、処理中の場合はコードが返されませんでした。
2.ハンドラーの動作を制御するマスターPCがあり、マスターPCとサイトPCの通信はStafを使用
3.そのコードを使用して、いくつかのテストを実行する必要があります(すでに実装され、適切に機能しています)。ハンドラーはデバイスを FIFO の順序で配置し、最初のサイトが最初にコードを返し、最後のサイトがコードを最後に返します。
4. サイト PC は受動的に動作しており、どのマスター PC がテストの実行時期と実行方法を決定します。サイト PC は、ハンドラーの準備ができているかどうかのみを認識し、テストを実行します。
したがって、私の質問は次のようになります: この場合、サイト PC (perl と .net が有効になっている Windows ベース) の場合、ビジー状態の待機方法の方が優れているか、または待機状態メカニズムの方が適しています:
例: サンプル コードは次のようになります。
または、この種のタスクを実行するためのより良い方法はありますか?
アドバイスしてください、ありがとう
c# - ページがasp.netでビジーなときにどうすればよいですか?
ボタンをクリックするとすべての内容が実行されるasp.net Webアプリケーションがありますが、動作が遅く、動作に10〜15秒かかり、サイトがビジーなときにユーザーにボタンをスパムクリックさせたくありません。したがって、私の計画は、ボタンを無効にして、その下のラベルをビジーにして「実行中」と表示することでした。それが完了すると、ボタンは再びアクティブになり、ラベルには「完了」と表示されますが、これは計画どおりに機能しませんでした。ボタンリスナー。
問題は、メソッドが実行された後にすべての視覚的なものが発生するため、実行中は何も変更されず、テキストフィールドの表示が完了した後です。ビジーなカーソルがあればうれしいですが、それは二次的な重要性です。
javascript - ashx ハンドラーを介してブラウザーに pdf をロードするための待機アイコン
ashx ハンドラー呼び出しからの pdf 応答の処理。C# 4.0 には、pdf を作成する汎用の ashx ハンドラーがあります。ハンドラーに送信する URL を作成することにより、ブラウザーで JavaScript からこのハンドラーを呼び出します。したがって、pdfを取得するための私の最後の呼び出しは次のとおりです。
私がこれに抱えている問題は、pdfが調理中であり、すぐに準備ができることをユーザーに伝えるために、回転するgifをアップするしかないということです。「レポートはしばらくお待ちください」と言うことができるアクセス ポイントがありません。その呼び出しが戻ってくると、pdf を開こうとするため、私のブラウザでは、pdf を開くか保存するかを尋ねるボックスが表示されます。
この呼び出しを行う別の方法はありますか?それにより、pdf ドキュメントが戻ってきたときにコードを実行して、スピニーをなくすことができますか?
android - 待機ダイアログが正しく機能せず、タスクが終了するまでアプリがフリーズします
添付ファイル付きのさまざまなメールを送信するクラスがあります。
この方法sendEmail(addresses);
では添付ファイルをアップロードしてメールを送信するのに時間がかかるため、待機中のダイアログを表示するAsyncTaskを作成しました。
ただし、残念ながら、送信中、アプリは何も表示せずに送信を終了するまでフリーズします(または、手順が終了する前に少しの間フリーズした待機ウィンドウが表示される場合があります)
私のクラスのコードの関連部分は次のとおりです
haskell - Haskell: ポーリングせずにファイルを監視する (Linux の inotify 風)
ポーリングせずにファイルを監視する haskell ライブラリ関数はありますか?
ポーリングを使用すると、次のようになります。
私が欲しいのは、システムによって起こされるブロッキング getModificationTime のようなものです。利用できるものはありますか?
それが posix システムでのみ利用可能であれば、私は完全に幸せですが、移植性が高いほど良いです :-)
編集: hinotifyは知ってが、Mac を使用しています (そのため、POSIX について言及しています)。
python - スリープ ループでのシグナル処理の実装
私が取り組んでいるアプリのモジュールの 1 つは、Linux で長時間実行されるプロセスとして使用することを目的としており、SIGTERM、SIGHUP、およびその他のシグナルを適切に処理したいと考えています。プログラムのコア部分は、実際には関数を定期的に実行するループです (別のスレッドを起動しますが、これはそれほど重要ではありません)。多かれ少なかれ次のようになります。
KeyboardInterrupt
ここで追加したいのは、例外と同じように、SIGTERM をキャッチしてループを終了することです。
私が考えていることの 1 つは、シグナル ハンドラー関数によって True に設定されるフラグを追加し、sleep(60) を sleep(0.1) などに置き換えて、秒をカウントするカウンターに置き換えることです。
そして他の場所:
しかし、これが最善/最も効率的な方法であるかどうかはわかりません。
objective-c - デプロイ後にコードが機能しない
アプリケーションのスレッドに次のコードがあります。
ready 変数はデリゲート メソッドから変更されます。このコードは、Xcode のツールバーの [実行] ボタンをクリックしてアプリケーションを開くとうまく機能します。ただし、このアプリケーションの .app ([製品] > [アーカイブ] をクリックし、手順に従って作成したもの) を開くと、このコードが機能しなくなります。
progressIndicatorController.value
はインクリメントされることはなく、この if ステートメントは に評価されることはありませんtrue
。この問題の原因は何ですか?
busy-waiting - フラグのペアを使用したビジーウェイトの実装
2つのフラグを使用して、ビジー待機メカニズムを実装しようとしています。デッドロックが発生しましたが、理由がわかりません...動作するはずのように見えます...
長いコードでごめんなさい、それは私がそれを作るのに成功した最短です。