問題タブ [blocking]

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 に答える
2307 参照

java - JavaスレッドはI/O操作で一時停止しません

Javaでは、スレッドが一時停止し、I / O操作(Socket.read()やDataGramsocket.receive()など)のブロック中に他のスレッドに何らかの作業を行う機会を与えるという印象を受けました。マルチスレッドネットワークアプリケーションで何らかの理由で、receive()を呼び出すと、他のすべてのスレッドが不足します(receive()を呼び出したスレッドは大きなボスになり、制御を放棄することはないため、永久にブロックされます!)

なぜこれが起こるのでしょうか?以前はまったく同じアプリケーションを使用していましたが、UDPではなくTCPベースでした。Socket.read()は常にスレッドを一時停止し、ブロックが長すぎる場合は他の人が少しの間作業できるようにしました。

-追加情報-私のカスタムスレッドのTCPバージョンは次のコードでした: http ://www.dwgold.com/code/proxy/proxyThread.java.txt

私の新しいコード(UDPバージョン)はほとんど同じですが、UDPメソッドとスタイルを使用するように少し変更されています。次に、これらのスレッドを2つ作成し、両方でstartを呼び出します。最初のスレッドは常にブロックし、UDPバージョンで他のスレッドを機能させることはありません。

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

c# - C# 関数の実行中の非同期待機

非同期の MySQL クエリを実行し、取得時に結果を返すブロッキング関数があります。理由は非同期であり、このプログラムはクエリ中にロックすることが許可されていません。

ユーザーがボタンを押すと関数が呼び出されるため、最初のクエリが完了するまでに関数が数回呼び出される場合があります。ブール値を追加して、クエリが実行されているかどうかを確認し、関数が完了するまで待機してから続行できると考えましたが、意図したとおりに機能していません。私が使用する 2 つの DoEvents() には問題があります。いずれかをコメントアウトすると、UI がフリーズすることを除いて、問題なく動作します。

クエリの実行中に関数をノンブロッキング待機させ、クエリ自体のフェッチ中にノンブロッキング待機をさせるにはどうすればよいですか? 関数自体がそれを呼び出したコードをブロックしているため、これを1つのスレッドに保持することを本当に好みます。どんな助けでも大歓迎です!

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

c# - C# データ通信で確認待ちを実装するには?

パケット形式でデータを送受信するクラスがあります。このクラスには、新しいデータが物理メディアから読み取れるようになったときに実行されるイベント ハンドラーが含まれています。

イベント ハンドラーでは、メディアからデータを読み取り、使用可能なデータを解析して完全なパケットを取得します。パケットが識別されると、新しいパケットをサブスクライバーに渡すためのイベントが発生します。このイベントのサブスクライバーは、パケットを使用するかどうかを決定します。

これまでのところとても良いです... 今私の質問に。上記のシナリオは、着信データを多数のサブスクライバーに配布し、さらに処理ロジックをアプリケーションのさらに上位に配置するために機能しますが、問題が残ります。

クラスは、クラスによって送信された別のパケットへの単なる応答 (ACK/FAIL と考えてください) であるデータ パケットを受信することがあります。

イベントハンドラーで受信生データを処理するという前述の概念を壊さずに、そのような確認を待つ何かを送信するメソッドを実装するにはどうすればよいですか?

問題を説明するための擬似コード:

たぶん、良いアイデアを持っているか、そのようなロジックを以前に実装したことさえあります。現時点ではどうしようか少し迷っています。正しい方向への助けや指針をいただければ幸いです;-)

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

lua - Lua - ユーザーからコマンドライン入力を取得しますか?

私の lua プログラムでは、操作を続行する前に停止してユーザーに確認を求めたいと考えています。停止してユーザー入力を待つ方法がわかりません。どうすればできますか?

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

api - 関数呼び出しブロックを持つことは悪い設計プロセスですか?

別のアプリケーションからデータを受信するために使用される API を作成しています。現在、関数はデータが受信されるまでブロックするように設計されています。私の考えでは、これにより、API を使用する開発者はマルチスレッドまたはある種のマルチプロセス設計を使用することが制限されます。したがって、関数がブロックするか、null を返し、再試行する前に数ミリ秒間スリープする方がよいでしょうか。

他のアプリケーションには、不明な期間、API を介して送信するデータがない場合があることに注意してください。

API は C++ で記述されています

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

java - CamelContext.start() はブロックしません

あるディレクトリから別のディレクトリにファイルをコピーする単純なApache Camelの例を実行したいと思います。

Apache Camel 2.0.0 を使用してこの例を実行すると、プログラムは直後に終了context.start();し、何もしません。Thread.sleep(30000);の開始後に追加するCamelContextと、バックグラウンド スレッドが動作し、ファイルがソース ディレクトリから宛先ディレクトリに 30 秒間コピーされます。

ただし、Apache Camel 1.6.2 を使用して同じコードを実行すると、start()メソッドは自動的にブロックされるため、ファイルをコピーするためにメイン スレッドをスリープ状態にする必要はありません。この動作が Camel 1.x から 2.x に変更されたというヒントは見つかりませんでした。これは本当に意図した動作ですか? Camel 2.0.0 で start() メソッドが実行をブロックすることは可能ですか?

ありがとう

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

c# - C# での関数呼び出しのブロック

C# で関数呼び出しをブロックするにはどうすればよいですか?

この関数は、さまざまなクラスから繰り返し呼び出されます。現在の操作を実行するまで、他の誰も使用できないようにロックしたいと考えています。では、またリリースしたいと思います。

助けてください..

ありがとう

編集:私は実際にはスレッドを使用していません...しかし、関数を繰り返し呼び出すタイマーを使用しており、異なるクラス間でも呼び出されます。

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

macos - NSURLConnection - リクエストを待機/ブロックすることは可能ですか?

SOAP Web サービスからの応答を待つ必要があります。返されるデータを操作し、クラスから呼び出し元のクラスに返す必要があるため、NSURLConnection を介して呼び出しています。

これが私のコードです:

CheckEmailAddress は、整数値を返すものとして宣言されています (上記のサンプルでは何も返さないことがわかっています)。

私が理想的に望むのは、CheckEmailAddress メソッドを使用して、Web サービスから取得した値を返すことです。ただし、リクエストが完了するまで NSURLConnection の呼び出しは待機しないため、実行できません。

誰かが回避策の潜在的なアイデアを教えていただければ幸いです。

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

c# - デバイスドライバDLLブロッキングと非ブロッキング?

私の会社は、USB経由でPCに接続する製品を製造しています。この製品用にVisualC#を使用してDLLドライバーを作成しているので、制御またはデバイス化できるプログラムを作成したい人は誰でも作成できます。ドライバーが実行する操作の一部は、デバイスが完了するまでに数秒かかります(たとえば、デバイス内でモーターを10,000ステップ移動するなど)。このドライバーに対して2つの異なるアプローチを検討していますが、どちらが理想的かわかりません。

最初のアプローチ:コマンドを非ブロッキングにします。基本的に、クライアントアプリケーションは私のdllのメソッドを呼び出してモーターの回転を開始し、そのメソッドはすぐに戻ります。次に、移動が終了したときにトリガーされるイベント「MoveFinished」があります。このアプローチにより、マルチスレッドを使用せずに、モーターの移動中にクライアントアプリケーションがフリーズしたり他の操作を実行したりすることがなくなります。

2番目のアプローチ:コマンドをブロックします。したがって、クライアントアプリケーションがMoveメソッドを呼び出すと、メソッドはブロックされ、移動が完了するまで戻りません。これにより、移動中にクライアントアプリケーションがフリーズします(マルチスレッドを使用している場合を除く)が、クライアントアプリケーションがデバイスの実行中にmoveメソッドを呼び出すなどのばかげた間違いを犯さないようにするという点でも役立ちます。すでに動いています...

誰かが共有する経験、知恵、コメントまたは考えを持っていますか?

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

c# - Uploadify + Castleproject Monorail: アップロード中に Ajax 呼び出しを実行できません

私は、uploadify jquery プラグインと CastleProject Monorail をバックエンドとして使用するプロジェクトに取り組んでいます。私が得る問題は、アップロード中に ajax 呼び出し (その間に呼び出される) をブロックしているように見えることです。アップロードが完了すると、ajax が呼び出されます。

奇妙なことに、新しい CastleProject モノレール プロジェクトで uploadify を実装すると、その間に呼び出された ajax 呼び出しが機能します。

以前のプロジェクトでは、現時点では考えられない設定がブロックの原因となっているようです。Web.config の設定は同じです。

これの原因は何か考えている人はいますか?

ありがとう

アップデート:

私は問題を見つけたと思います: Session オブジェクトが使用されるとすぐに、Web サーバーは複数のリクエストをブロックします。これは、競合状態のより一般的な問題を回避するためです。

競合状態を自分で処理できるように、これを無効にする方法はありますか?