問題タブ [thread-sleep]

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 投票する
3 に答える
1112 参照

python - ノンブロッキング コールのスリープ

ノンブロッキング ソケットからデータを受信するための最適なスリープ値を探しています。例えば:

スリープしないと CPU 使用率が 100% になるため、CPU 使用率と帯域幅を最適化する方法はありますか? CPU がスレッド切り替えを実行できるようにするには、どのくらいスリープ状態にする必要がありますか?

ところで、SO_SNDBUF/SO_RECVBUF を介してソケットのバッファを設定し、TCP_NODELAY を設定することは理にかなっていますか、それともそれらを組み合わせるべきではありませんか?

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

c# - スレッドスリープ/新しい日まで待つ

1日に実行する操作の数に制限があるループでプロセスを実行しています。この制限に達すると、現在、ループ内の時刻をチェックして、新しい日付かどうかを確認しています。

最善の選択肢は次のとおりです。

  • 新しい日付のために毎秒時間をチェックし続けてください
  • 真夜中までの秒数を計算し、その時間の長さを眠る
  • 他に何かありますか?
0 投票する
4 に答える
908 参照

vb.net - VB .net は非常に短い期間、sleep() できませんでした

VB のネットワーク アプリケーションで、 packetSize/Bandwidthの期間だけスリープしたいと考えています。

この値は、「10^-3 - 10^-6」秒の範囲で変化します。

Sleep() 関数を使用すると、1 秒未満 (< 1 秒 ~~ 0 秒??) の場合、その期間はスリープしていないと思います。

編集:

  1. 範囲を超えた短い昼寝の後、パケットを送信し続けなければなりません。そのため、たとえば、クライアント側で 0.001 ミリ秒スリープするように指定できませんでした。
  2. 私の要件は、ファイルを読み取り、定期的または不規則なスリープ間隔で小さなパケットをサーバーに送信し続ける CS アプリのクライアント側です。その後、サーバーはパケットをキャプチャし、独自の速度で処理します。

これを達成する方法は?

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

java - Spring MVC リクエストハンドラーで Thread.currentThread().sleep(2000) を呼び出す 2 番目のリクエストにはどのような影響がありますか?

ユーザーの一部のエンティティを更新するためにサードパーティ サービスを呼び出している間、Spring MVC リクエスト ハンドラーで条件が発生するのを待つ必要があります。

待機時間は平均約 2 秒です。

Thread.sleepリモート呼び出しが完了し、エンティティがデータベースで更新されるようにするために呼び出しています。

この後、更新されたモデルをデータベースから取得し、ビューを表示します。

しかし、このコントローラー/リクエスト ハンドラーで処理するために到着する並列リクエストにはどのような影響がありますか?

並列リクエストも待機しますか?

それとも、別のスレッドに生成されるので、現在のリクエストで発生した遅延の影響を受けませんか?

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

.net - Thread.Sleepの解像度を向上させることはできますか?

Thread.Sleep()の解像度は1から15.6msまで変化します

このコンソールアプリを考えると:

出力は100に近い100の数値になると予想しました。代わりに、次のようになります。

99 99 99100 99 99 99106106 99 99 99100100 99 99 99 99101 99 99 99 99 99101 99 99 99 99101 99 99 99100 99 99 99 99 99103 99 99 99 99 100 99 99 99 99 813 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1559 1560 1559 1559 1559 1559 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1558 1559 1558 1558 1558

しかし、正確な結果が得られない場合があります。毎回〜1559になります。

なぜ一貫していないのですか?

いくつかのグーグルは、15.6msがタイムスライスの長さであることを私に教えてくれたので、それは〜1559の結果を説明しています。しかし、なぜ私は時々正しい結果を得るのですか、そして他の時には私はちょうど15.6の倍数を得るのですか?(たとえば、Thread.Sleep(20)は通常〜31.2msを与えます)

ハードウェアまたはソフトウェアによってどのように影響を受けますか?

私がそれを発見した理由のためにこれを尋ねます:

私は32ビットのデュアルコアマシンでアプリケーションを開発していました。今日、私のマシンは完全なOSの再インストールで64ビットクアッドコアにアップグレードされました。(どちらの場合もWindows7と.NET4ですが、古いマシンにW7 SP1が搭載されているかどうかはわかりませんが、新しいマシンには搭載されています。)

新しいマシンでアプリケーションを実行すると、フォームがフェードアウトするのに時間がかかることにすぐに気付きます。10から50までの値でThread.Sleep()を使用する、フォームをフェードするカスタムメソッドがあります。古いシステムでは、これは毎回完全に機能するように見えました。新しいシステムでは、フェードするのに必要以上に時間がかかります。

この動作が古いシステムと新しいシステムの間で変わったのはなぜですか?これはハードウェアに関連していますか、それともソフトウェアに関連していますか?

一貫して正確にすることはできますか?(〜1msの解像度)

Thread.Sleep()を約1msまで確実に正確にするために、プログラムでできることはありますか?それとも10ms?

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

java - この「静的メソッドは静的な方法でアクセスする必要があります」をJavaで取り除く方法は?

Javaアプリケーションに次のコードがあります

しかし、日食は私に次の警告を示しています:

警告付きのコードをリリースしないことを非常に誇りに思っています。この警告を取り除きたいと思います(2つの異なるクラスで発生します)。コード全体を投稿する必要がありますか?

0 投票する
4 に答える
1742 参照

c# - Waking a thread in C#

I am looking for a simple way to put a thread to sleep and to wake it. The thread runs in background in an infinite loop and sometimes does some work, sometimes just runs through. I have found out that there is no corresponding Wait() to the Sleep() and waking a thread with Interrupt() causes an exception. Apparently a sleeping thread is not meant to be disturbed.
Since I know when the work appears it seems a good idea to tell the thread, instead of having it check over and over again.

How can a thread be put to a 'lighter sleep' to be able to wake up alone each second or at a command from other thread?

-

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

c# - C# コンソール アプリケーションでの一方向の WCF 呼び出しの完了を待機しています

IsOneWay=true + コールバック インターフェイスを介してアクセスする必要がある機能を実装する WCF Web サービス (自分の管理下にない) があり、そのメソッドの 1 つが処理の完了を通知します。最初は GUI からアクセスするように設計されていたため、このように記述されています。

ただし、バッチで使用するには、コンソール アプリケーションから同じメソッドにアクセスする必要があります。現在、これを達成するための私の大雑把な方法は、フラグを false に設定することです。WCF メソッドを呼び出した後、簡単な Thread.Sleep() 呼び出しを含む while ループを実装します。これは明らかに機能しますが、最終結果を達成するための非常に貧弱な方法のようです。

これを行う適切な方法が何であるかを知りたいです。注: サービスは制御不能であり、参照は IDE を介して追加されたばかりですが、コード実装などを簡単にノックアップできます。

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

c# - 睡眠中のバックグラウンドワーカーをキャンセルするにはどうすればよいですか?

が含まれているバックグラウンドワーカーをキャンセルするのに問題がありThread.Sleep(100)ます。

削除するThread.Sleep(100)とキャンセルは機能しますが、それ以外の場合は続行されます(プログレスバーは停止しません)。

編集:残りのコードを追加しました

0 投票する
3 に答える
2882 参照

multithreading - スレッドで「時間を無駄にする」ための最もCPU効率の良い方法は何ですか?

一度に数秒間実行されるスレッド(100)がいくつかあります。それらが実行されているとき、それらは別のシステム(シリアルデバイス)からの応答を待つためにその時間のかなりの時間を費やします。一度に100個のスレッドを実行することはリソースを大量に消費する可能性があることを念頭に置いているので、実際には一度に開始できるスレッドの数を制限しています。

スレッド内で外部イベントを待つには良い方法と悪い方法があるはずですが、私には思い浮かびます。このアプローチはCPUを集中的に使用しますか?:

そして、このアプローチはそれをより効率的にしますか?:

* 追加情報 *

環境はx86WindowsXPです。スレッドコードは、シリアルデバイスとの長く複雑な一連の対話ですが、一般に、COMポートに文字を書き込み(AsyncFreeシリアルライブラリを使用)、着信文字バッファにキャンプして文字が返されるのを待機します。それらが到着したときにそれらを処理します。シリアルライブラリがデバイスの読み取りと書き込みを行うと思います。スレッド内の時間は、1分から数秒まで長くなる可能性がありますが、その時間のほとんどは、文字がポートを離れるのを待つか、応答文字を待つ(ボーレートが遅い)ために費やされます。したがって、スレッドが待機中に動作するための最良の方法についての私の質問。現在、私はSleepループで呼び出していますCharactersInBufferゼロ以外になり、各文字が到着したときに処理し、完全な応答が得られたらスレッドを終了します。したがって、コードは次のようになります(タイムアウトの処理などを無視します)。