問題タブ [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.
c++ - WinSocks と *nix 用のノンブロッキング ソケットの作成
C/C++ では、WinSocks と *nix の両方で、ブロッキング ソケットを非ブロッキング ソケットに変換する方法を教えてください。select() が正しく機能するようにします。プラットフォーム固有のコードにはプリプロセッサを使用できます。
python - Pythonでキーボードをポーリングする(キープレスを検出する)
コンソールのpythonアプリからキーボードをポーリングするにはどうすればよいですか? 具体的には、他の多くの I/O アクティビティ (ソケットの選択、シリアル ポート アクセスなど) の最中に、これに似たようなことをしたいと考えています。
Windowsでこれを行う正しいpythonicの方法は何ですか? また、必須ではありませんが、Linux への移植性も悪くありません。
c++ - stdin/stdout/stderr でのクロスプラットフォーム (linux/Win32) ノンブロッキング C++ IO
次の特性を持つ stdin/stdout を介したノンブロッキング IO の最適なソリューションを見つけようとしています。
- 十分なデータがある限り、nサイズのチャンクで読み取ります。
- 十分なデータがない場合は、部分的なチャンクで読み取ります。
- 利用可能なデータがない場合は、データが得られるまでブロックします (たとえnよりも小さい場合でも)。
目標は、「制御」コードをすぐに処理しながら、大規模なデータセットを効率的に転送できるようにすることです (部分的に満たされたバッファーにコードを残すのではなく)。
スレッドと istream::get() ループを使用するか、プラットフォーム固有のコードをたくさん書くことでこれを達成できることを私は知っています (Windows ではファイル ハンドルで select() を実行できないため)... (( istream::readsome() も有望に思えますが、Googleで見つけた唯一の結果は、実際にはうまく機能しないと言っている人だけでした.))
私はこれらの API を使ったコーディングをあまり行っていないので、もっと良い方法があるかもしれません。
c - C ノンブロッキング キーボード入力
ユーザーがキーを押すまでループするプログラムをC(Linux上)で作成しようとしていますが、各ループを続行するためにキーを押す必要はありません。
これを行う簡単な方法はありますか?おそらくそれでできると思いますがselect()
、それは大変な作業のようです。
または、ノンブロッキング io の代わりにプログラムが終了する前にctrl-キーを押してクリーンアップを行う方法はありますか?c
unix - Solaris のコマンドラインからノンブロッキング パイプを作成する方法は?
他のプロセスからの入力を読み取って分析する lua スクリプトを作成しようとしています。この目的のために私は io.popen を使用しており、Windows では期待どおりに動作しますが、Unix(Solaris) では io.popen ブロックから読み取るため、スクリプトはすぐに戻るのではなく、何かが来るまでそこで待機します...
私の知る限り、スクリプト内から io.popen の機能を変更することはできません。可能であれば、C コードを変更する必要はありません。スクリプトをパッチ適用済みのコードにバインドする必要があるためです。バイナリ。
コマンドラインの解決策はありますか?
java - 一意の負の数を生成するノンブロッキング アルゴリズム
私は最近、一意の負の数を生成するために使用されるコードをリファクタリングしました。
編集:複数のスレッドがこれらの ID を取得し、キーとして DB に追加します。簡単に識別できるようにするには、数値を負にする必要があります。テスト セッションの終了時に、数値は DB から削除されます。
私のJavaアルゴリズムは次のようになります。
上記のコード構造は、セットと「再試行」ループに投機的に追加されているため、同期されたセットをアトミック変数のいずれかに置き換える、同等のノンブロッキング アルゴリズムがあると思われます。
アトミック変数を使用して書き直そうと何度か試みましたが、すべてマルチスレッド攻撃テストに失敗しました。
エレガントなノンブロッキングの同等物はありますか?
編集:好奇心のために、アトミック整数をガードとして使用する欠陥のある試みを次に示します
編集:以下のテストハーネス:
tcp - 非ブロッキング TCP write(2) は成功するが、要求は送信されない
write(2) を使用してノンブロッキング TCP ソケットに書き込まれたメッセージの小さなセットが、送信元インターフェイスでは見られず、宛先でも受信されません。
何が問題なのですか?アプリケーションがこれを検出して再試行できる方法はありますか?
c - C の Linux でノンブロッキング コンソール I/O を行うにはどうすればよいですか?
C で Linux/OS X のノンブロッキング コンソール IO を行うにはどうすればよいですか?