問題タブ [asynchronous]
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++ - C++ 用の単純な非同期マルチスレッド HTTP 要求ライブラリ
正直に言うと、現在、オンライン ゲーム用のクライアント/サーバーを作成しようとしています。私は貧乏でリソースが限られているため、PHP バックエンドを使用してサーバーの基本的な部分をテストし、最終的な目標は C++ でサーバー エンドを再構築することです。
Windows (XP および Vista が望ましい) 用の C++ ライブラリを探しています。これにより、ネットワークの問題の各部分に 1 つの専用の有限数のスレッドを使用できます。例として、スレッドを使用してプレイヤーの位置情報をサーバーに報告したい (そして、他のプレイヤーの位置情報に関する応答を受信する) が、そのエリアの 3D アートワークでバックグラウンド ダウンロードする別のスレッドが必要です。 /players、および組み込みのチャット システム用の別のスレッドなど。これらはすべて、互いに完全に独立している必要があります。
私はライブラリで何をしたいのかを知っています。設計のビットを理解しました。この正確な目的のための優れたライブラリがおそらくすでに存在することを知っているので、車輪を再発明するのは少しばかげていると感じています。それで、あなたの提案は何ですか?サーバーにデータを送信し、応答を受け入れる必要があります。理想的には、リクエストは完了時にイベントをトリガーする必要があり (そのため、すぐにデータを取得して何かを行うことができます)、複数のトランザクションを同時に処理できる必要があります。HTTP は素晴らしいボーナスですが、必要に応じて HTTP プロトコルを自分で処理できます。
ありがとう!
c++ - ReadDirectoryChangesW を非同期で使用するとスレッドがデッドロックする
1 つのスレッドで複数のディレクトリの変更をリアルタイムで監視したいので、GetQueuedCompletionStatus と非同期で ReadDirectoryChangesW() メソッドを使用することにしました。これが私のコードです:
ここでコードを実行すると、GetQueuedCompletionStatus() 関数の最後のパラメーターに設定した値に関係なく、理由もなくスレッドがブロックされます。なぜこの問題に遭遇したのかわかりません。誰でも理由を教えてもらえますか? どうもありがとう!
f# - 優れたF#非同期IOサンプル
スレッドフープのあるファイルの非同期IOの良いサンプルはどこにありますか?
ありがとう
java - Future.get()およびInterruptedException非同期スレッド
アプリケーションでhttpClientを使用して非同期スレッドを使用しています。このようにFutureApiを使用して電話をかけます
この呼び出しは、Callable httpClient call()メソッドから返されたhtml文字列を取得しようとします。
ただし、私がやりたいのは、call()メソッドの実行中にgetメソッドが長時間待機しないようにすることです。rssFuture.get()を呼び出すときにタイムアウトパラメータを渡す必要がありますか、それともInterruptedExceptionキャッチブロックで囲んでも大丈夫ですか?
また、非同期スレッドがInterruptedExceptionをスローする前に待機するデフォルトの時間はありますか?その場合、カスタム値を設定できますか?
multithreading - ManualResetEvent を使用する非同期呼び出しの実装を Thread メソッドの組み合わせを使用する実装に変更する
ManualResetEvent の使用から Thread.Join などの Thread メソッドの使用に切り替えるデザイン パターンを探しています。現在、非同期呼び出しを行ってから、ManualResetEvent を使用して非同期呼び出しが終了するまで待機してから、呼び出しを行ったスレッドを続行しています。
より安定した読みやすいコードを生成する実装があればうれしいです。C# の yield キーワードと、もしあれば F# Async を使用した実装を見てみたいと思います。
ありがとう。
iphone - 変数の割り当てと非同期リクエストの処理
非同期リクエストが関係する割り当てを処理するための信頼できる設計を探しています。さらに明確にするために、データ管理を処理するクラスがあります。これはシングルトンであり、iPhone アプリケーション全体で使用される多くの最上位データが含まれています。
ビュー コントローラーは、次のようなことを行う場合があります。
MySingleton は、合成されたユーザーの getter をオーバーライドし、設定されているかどうかを確認します。設定されていない場合は、非同期要求を開始する接続マネージャー (NSURLConnection とそのデリゲート メソッドのラッパー) と通信し、ここから問題が発生します。「ユーザー」がいつ利用可能になるかは保証できません。リクエストを同期に変更することもできますが、特に帯域幅がすでに制限されているモバイル環境では、ユーザー エクスペリエンスに直接影響します。
ある時点で、利用可能になるか nil になるまでユーザーを返さない、ある種のロック/同期コードをゲッターで実行できるようにする必要があります。
NSURLConnection がデータを利用できるようになったら、応答オブジェクトを使用して何か/どこかをコールバックし、ゲッターにデータが利用可能であることを知らせる必要があります.失敗したか成功したか.
これを処理するための提案はありますか?
python - 慣用的な非同期設計
非同期のAPIを作成するときに利用できる便利なイディオムはありますか?全体を通していくつかの異なるスタイルを使用しているように見えるので、何かを標準化したいと思います。非同期コードを単純にするのは難しいようです。これは、非同期操作が何でもないためだと思います。
最も基本的なレベルでは、APIのユーザーは次のことができる必要があります。
- データが利用可能になったら、データをプッシュしてもらいます
- 非同期操作のステータスを確認する
- 発生したエラーが通知されます
- 完了するのを待ちます(非同期操作を同期操作に変換します)
私のクラスはいくつかの非同期操作をサポートしています。私はその周りのクラスにいくつかのステータス/エラーコールバックを入れてきましたが、クラスは多くの付随的なフィールドでガンガンになり、大きくなりすぎています。誰かが非同期APIを使用したことがあるかどうか、私は興味があります。.NETのBegin/EndAsyncOperation + AsyncResultデザイン、およびJavaのいくつかのクラス(Futureなど)を見てきました。
これはPythonで記述されているため、非常に柔軟性があります。注意点があります。これらの非同期操作の一部は、リモートマシンにマーシャリングされ、そこで実行されます。したがって、すべての操作が必ずしも別のスレッドで実行されるわけではありません。
javascript - IE での Ajax 非同期 - エラー「この操作を完了するために必要なデータはまだ利用できません」
私は Javascript で書かれた 100% 有効な Ajax モデルを持っており、Get メソッドまたは Post メソッド、通信するページ、そのページに送信する文字列、自分のページのどの要素をいじっているのかなど、いくつかの入力を使用しています。私は私の応答を受け取ります。問題は、要求を非同期 (したがって Ajax) に設定すると、onreadystatechange イベントで IE が「この操作を完了するために必要なデータはまだ利用できません」というエラーを返すことです。ステータスは 200 です。Ajax は非同期であるため、Firefox または Chrome ではエラーは発生しません。
Post メソッドのスニペットを次に示します。
編集:IEでは、ActiveXコントロールを使用していることを指摘する必要があります-> Msxml2.XMLHTTPまたはMicrosoft.XMLHTTP、または最初にtrueを返す方。
c# - 保留中の APM 操作を強制終了する方法
保留中の操作がある場合、たとえば
ストリームプロバイダーを閉じます。
当然のことながら、例外が発生します。
ポートを閉じる前に、保留中の APM 操作をキャンセルするための推奨される方法はありますか?
Colby の返答は、私が望んでいたものではありませんが、少なくとも無駄な調査の道を閉ざしてくれます。
幸いなことに、私は解決策を見つけました。
ストリームごとに、さまざまな状態情報を class に保持しDeviceSession
ます。このクラスには、着信データを処理するReadStream
の実装を提供するメソッドがあります。AsyncCallback
_asyncCallbackRead
アンダースコアで始まる他のすべての変数は、DeviceSession のコンストラクターで割り当てられたクラスのプライベート メンバーであることに注意してください。
コンストラクターは、 への最初の呼び出しも提供します_stream.BeginRead
。
わざわざ設定していないことに注意してくださいar.AsyncState
。コールバック デリゲートは DeviceSession の特定のインスタンスのメソッドを参照するため、厳密に型指定された詳細なコンテキスト情報 (DeviceSession のこのインスタンスのメンバーに含まれる) は自動的にスコープに含まれます。これが、セッション オブジェクトを持つポイントです。
リスナーの中止に戻ると、ストリーム プロバイダーを閉じるとコールバックがトリガーされますが、EndRead を呼び出そうとするとIOException
.
通常、このような例外は、リスナーの再起動が必要な障害を示しており、ストリーム プロバイダーを再起動してセッションを再作成することで対応する必要があります。これは、プロバイダーに障害が発生したか、ユーザーが接続を再開しようとしているか (たとえば、新しいデバイスをポートに接続したか) を判断する信頼できるストリーム プロバイダーに依存しない方法がないため、複雑です。
IsOpen
秘訣は、さらにコンテキスト ( ) をに追加しDeviceSession
て、セッションが開いているか閉じているかを示し、それを使用して の最終的な中止実行をスムーズに完了することですReadStream
。
の場合IsOpen
はtrue
、IOException
回復が必要な障害を表します。IsOpen
障害がfalse
意図的に引き起こされたものであり、アクションは不要な場合。
asp.net - 非同期のASHXで生成された画像がIE6で常に機能するとは限らないのはなぜですか?
IHttpAsyncHandlerを継承するWebHandlerを使用する場合、特定の状況が不明な場合、ブラウザーMS IE6がそれを表示せず、要求が終了しないことに気付かないはずです。修正はありますか?