問題タブ [busy-loop]

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.

0 投票する
5 に答える
5807 参照

c# - C#でアイドルループを作成する良い方法は?

FileSystemWatcher をセットアップするアプリがあります。無期限に実行する必要があります。

アイドルループで実行する最良の方法は何ですか?

私は現在やっています

これは機能しているようです (つまり、イベントをキャプチャし、ビジー ループでコアを使い果たしません)。

他の慣用句はありますか?このアプローチに問題はありますか?

0 投票する
2 に答える
119 参照

javascript - コードが長い場合、prettify は「スクリプトがビジー状態です」という警告を表示します

Prettify by Googleを使用しています。直し方?

0 投票する
5 に答える
6258 参照

cuda - 非同期cudaストリーム実行中のビジーウェイトを取り除きます

私は休眠中のコードでホストスレッドでビジーウェイトを取り除く方法を探しています(そのコードをコピーしないでください、それは私の問題のアイデアを示すだけで、多くの基本的なバグがあります):

}

ホストスレッドをアイドル状態にして、何らかのストリームが終了するのを待ってから、別のストリームを準備して実行する方法はありますか?

編集:ビジーウェイトを強調するために、コードにwhile(true)を追加しました。ここで、すべてのストリームを実行し、そのうちのどれが別の新しいストリームの実行を終了したかを確認します。cudaStreamSynchronize特定のストリームが終了するのを待ちますが、最初にジョブを終了したストリームのいずれかを待ちたいです。

EDIT2:私は忙しいのをやめました-休眠の方法で待っています:

ただし、ホストスレッドでビジーウェイトを使用しているバージョンよりも少し遅いようです。これは、現在、ストリームにジョブを静的に分散しているためだと思います。そのため、1つのストリームが作業を終了すると、各ストリームが作業を終了するまでアイドル状態になります。以前のバージョンでは、作業が最初のアイドルストリームに動的に分散されたため、より効率的でしたが、ホストスレッドでビジーウェイトが発生していました。

0 投票する
5 に答える
2333 参照

cpu-usage - ビジー ループが CPU を 100% 使用するのはなぜですか?


複雑なアルゴリズムを実装するループでは CPU 時間の 100% を使用するのに、ビジー ループでは CPU 時間を 100% 使用することがよくあるのはなぜですか?
ありがとう :)

0 投票する
2 に答える
2161 参照

c++ - Sleep(0) と一時停止命令によるビジー ループの違いは何ですか?

アプリですぐに発生するはずのイベントを待機したいので、スレッドを待機させて後でウェイクアップしたくありません。Sleep(0)ハードウェア一時停止命令の使用との違いは何だろうか。

次のプログラムの CPU 使用率に違いは見られません。私の質問は、省電力の考慮事項に関するものではありません。

0 投票する
6 に答える
222 参照

java - ループではなくブロックする理由

次のコードを書くことが悪い習慣と見なされる理由は何ですか?

私にとって、sleep に任意の値を選択することは良い習慣ではなくBlockingQueue、この状況では a を使用しますが、そのようなコードを記述すべきではない理由が複数あるかどうかを知りたいです。

0 投票する
2 に答える
2162 参照

python - Python Threading.Event セミビジー待機のより良いソリューション

私はかなり標準的な Threading.Event を使用しています: メインスレッドは、実行されるループ内のポイントに到達します:

他のブロックは、応答が利用可能になるまで要求をブロックし、次のことを開始します。

メインスレッドが 40 秒間選択することを期待しますが、そうではありません。Python 2.7 ソース Lib/threading.py から:

得られるのは、500us ごとに実行される select syscall です。これにより、選択ループが非常にタイトになり、マシンにかなりの負荷がかかります。

バランスをとる行為が含まれる理由と、それがファイル記述子を待機しているスレッドと異なる理由を説明してください。

第二に、そのようなタイトなループなしで、ほとんどスリープ状態のメインスレッドを実装するより良い方法はありますか?

0 投票する
0 に答える
186 参照

assembly - Intel の PAUSE 命令とメモリ順序違反の可能性

重複の可能性:
x86 の一時停止命令

Intel のOptimization Reference Manualには、スピン待機ループについて次のように書かれています。

3.4.1.2 スピン待機ループとアイドル ループ

Pentium 4 プロセッサには、新しい PAUSE 命令が導入されています。この命令は、Intel 64 および IA-32 プロセッサの実装では構造的に NOP です。

Pentium 4 以降のプロセッサでは、この命令は、コード シーケンスがスピン待機ループであることを示すヒントとして機能します。このようなループに PAUSE 命令がない場合、Pentium 4 プロセッサは、ループを終了するときに重大なペナルティを受ける可能性があります。これは、プロセッサがメモリ順序違反の可能性を検出する可能性があるためです。PAUSE 命令を挿入すると、メモリ順序違反の可能性が大幅に減少し、結果としてパフォーマンスが向上します。

強調表示された部分を理解しようとしています。プロセッサがメモリ順序違反の可能性を検出する可能性があります。これが何を意味するのか説明していただけますか?ビジー ループでこのような違反が発生する可能性があるのはどのような状況PAUSEでしょうか。違反は本物か偽物か、それを回避しないとどうなるか?

問題を示す例は素晴らしいでしょう。

0 投票する
1 に答える
405 参照

zeromq - zeromq pub/sub パターン、リスナーは常にビジー ループを使用してメッセージをチェックしますか?

私は初めてですが、いくつかの例を見てきましたが、たとえばパターンZeroMQで、メッセージを受信するためにリスナーが常にビジーループを実行する必要があるようです。pub/sub受信者は、メッセージを消費するためにこれを行う必要があります。

受信者が自分自身をソケットに登録するだけで、メッセージをチェックするためにビジーループする代わりに、メッセージがあるたびに呼び出されるような、何らかの種類のコールバックメカニズムはありますか?