問題タブ [nonblocking]

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

linux - 反対側が書き込みを行って閉じたときに、epoll 制御のノンブロッキング ソケットでバイトが失われる

私は現在サブスクライブしているノンブロッキングソケットを持っています:

いくつかの EPOLLIN を受信し、EAGAIN までノンブロッキングで読み取り、次に HUP と RDHUP を受信します。さらに数バイトを読み取ることもあります。

反対側は次のとおりです。

epollin と close 時間の両方のイベント ループで直接 msg_peek を使用して recv を試しました。

ソケットをノンブロッキングにするか、送信とクローズの間でクライアントに sleep(1) を入れると問題なく動作します。

epollに関連するよりも、ノンブロッキングソケットの問題に思えます。「nc -l -p port」のような単純なもので、適切な量のバイトを受け取ります。

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

c - ブロックせずにstdinがまだ開いているかどうかを確認する方法は?

stdin が閉じられたときに実行を停止するには、純粋な C で書かれたプログラムが必要です。

プログラムのメイン サイクルで行われる無期限の作業があり、ブロッキング チェック (のようなgetc()) を使用する方法はありません (標準入力にデータが到着することは想定されていません - 未知の時間だけ開かれたままになります)。

inetd、xinetd、またはそれらの類似物でホストされているネットワークデーモンの実現に説明されている機能を使用する予定です-接続が開いたままの状態で標準出力にデータを出力し、閉じたときに作業を正しく終了する必要があります。接続が終了しても停止しないため、ホスティングサービスによってプログラムが強制終了されました。

fctntl()標準入力記述子にO_NONBLOCKフラグを適用すると、read()ノンブロッキング モードで関数を使用できるようになるのでしょうか? select()どうにか使えばいいのでは?

PS データは想定されていませんが、stdin に到着する可能性があります。ノンブロッキング読み出しの方法は、質問に対する答えになるでしょう。

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

c++ - 仮想キーボードにアクセスする WinCE のノンブロッキング キーボード

キーボードイベントをブロックしない方法で読み取れるようにするソリューションを必死に探しています。これらのキーボード イベントはVIRTUAL KEYBOARD、WinCE デバイスに付属の によって生成されます。C++ で実行されているコンソール アプリケーションがあり、ユーザーはメニューから「ESC」、「U」、およびその他の文字を使用してナビゲートするよう求められます。私は最初に fread と stdin を使用しようとしましたが、それが呼び出しをブロックしていて、改行を待っていることに気付きました。次に、Windows メッセージ WM_KEYUP に接続しようとしましたが、この Windows メッセージを受け取りませんでした。さらに、QtGUI をイベント QKeyEvent と一緒に使用しようとしましたが、イベントを受け取りません。一般に、WinCE デバイスでノンブロッキング キーボード イベントを受信できるかどうか疑問に思います。何かお勧めがあれば嬉しいです!

乾杯、ジャン

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

c# - while(true) ループのない C# ノンブロッキング ソケット

私は、c# でノンブロッキング ソケットを使用して、ソケット プログラミングを作成しようとしています。thisなど、私が見つけたさまざまなサンプルは while(true) ループを使用しているようですが、このアプローチでは CPU が 100% でバーストします。イベント プログラミング スタイルを使用してノンブロッキング ソケットを使用する方法はありますか? ありがとう

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

java - Javaで受け入れられたソケットを非ブロックにする方法

クライアントからの接続を受け入れ、その接続されたソケットを別のオブジェクトに渡しますが、そのソケットは非ブロックである必要があります。使用しようとしていますgetChannel().configureBlocking(false)が、機能していないようです。以下のメソッドは 100 ミリ秒ごとに呼び出されるため、ノンブロッキングである必要があります。このノンブロッキングにする必要がある他の方法はありますか? 助けてくれてありがとう!

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

python - Python ソケットが何も受信しない

Python を使用してカメラから可変長ストリームを受信しようとしていますが、奇妙な動作をします。これは Linux (Ubuntu 9.10) 上の Python 2.6.4 (r264:75706) です。

メッセージには、静的ヘッダーとそれに続くサイズ、およびストリームの残りが含まれているはずです。ここにコードがあります

このコードを使用すると、「recv\'d 0 bytes」ループ (めったに発生しません) でスタックするか、次のようになります。

これはまったく奇妙です(0バイトを受信しますが、ループから抜け出します)。ダンプされたデータに誤りがあります。これは、その状況で予期されることです。

編集 1: デバイスは、10 バイトのヘッダーが前に付いた JPEG 画像を送信することになっています。最初のループを通過した場合、このヘッダーの正確性とサイズ情報を確認する必要があります。プログラムは間違ったデータ エラーで終了し、ダンプ ファイルはバイナリのガベージの集まりであるため、最後に何を受け取ったかわかりません。反対側のデバイスが正しいデータを送信しようとしていると確信しています。

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

java - UDP に (ノンブロッキング) NIO を使用する必要がありますか?

この投稿によると、UDP はブロックしません。UDP に (ノンブロッキング) NIO API を使用する利点はありますか? それとも、より簡単な「従来の」io API を使用する必要がありますか?

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

java - SSLおよびNIOノンブロッキングソケット

高度にスケーラブルなSSLクライアントを作成することをどのように推奨しますか?

現在、SocketHTTP以外のSSLソケットを必要とするAppleAPNSサーバーに接続するためにプレーンを使用しています。NIOライブラリの使用を検討しましたが、が不足しておりSSLSocketChannel、優れたライブラリや、独自のライブラリを展開するためのスムーズなチュートリアルを見つけることができませんでした。

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

language-agnostic - アトミック命令

アトミック命令とはどういう意味ですか?

以下はどのようにして Atomic になりますか?

TestAndSet

ソフトウェアの観点から、ノンブロッキング同期プリミティブを使用したくない場合、どうすれば命令の原子性を確保できますか? ハードウェアでのみ可能ですか、それともアセンブリ レベルのディレクティブの最適化を使用できますか?

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

ruby - Ruby の「ready?」を使用する gets、puts などの IO メソッド

Ruby の標準ライブラリ「io/wait」は、IO オブジェクトに対してready?、利用可能な入力がある場合に非 nil を返し、それ以外の場合に nil または false を返すメソッドを提供します。sysreadやのようないくつかのメソッドは、やsyswriteなどのより高いレベルのメソッドで安全に使用できないことを知っており、より高いレベルのメソッドと混合しても安全かどうかを知りたいと思っていました。ready メソッドはかなり便利で、おそらく に依存するよりも洗練されているように見えますが、驚くべきことに、あまり使用されていません。ドキュメントには、 orで使用するのが安全でないことを示すものは何もありません。ソケットの読み取り/書き込み時に最終的に予期しない動作を引き起こす可能性のある互換性のないメソッドを混在させていないことを確認したいだけです。getsreadready?IO.selectreadgets

編集:Ruby 1.8.7を使用していることに言及する必要があると思います。