問題タブ [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.
.net - .NET System.Net.CookieContainer はスレッドセーフですか?
- .NET クラス System.Net.CookieContainer はスレッドセーフですか? --更新:ターンキー対応--
- 非同期リクエスト中に変更される変数 (つまり、HttpWebRequest.CookieContainer) に対してスレッドセーフを確保する方法はありますか?
- スレッドセーフクラスを強調する属性はありますか? --更新: MSDN でスレッドセーフについて説明されている場合、おそらくその属性はありません --
- すべての .NET クラスはスレッド セーフですか? --更新:マークが答えた--
マルチスレッド コードの非同期リクエストで CookieContainer を使用するため、これらの質問をします。また、ロック内に非同期リクエストを入れることはできません。F# のように、読み取り専用の "変数" (または不変型) を使用する必要があるのではないでしょうか?
c# - 非同期に処分する方法は?
IDisposableインターフェイスを実装するクラスがあるとします。このようなもの:
MyClassはいくつかのアンマネージ リソースを使用するため、IDisposableのDispose()メソッドはそれらのリソースを解放します。MyClassは次のように使用する必要があります。
ここで、 DoSomething()を非同期的に呼び出すメソッドを実装したいと考えています。MyClassに新しいメソッドを追加します。
ここで、クライアント側から、MyClassを次のように使用する必要があります。
ただし、他に何もしないと、DoSomething()が呼び出される前にオブジェクトmyClassが破棄される可能性があるため、これは失敗する可能性があります(予期しないObjectDisposedExceptionがスローされます)。そのため、 DoSomething()への非同期呼び出しが完了するまで、 Dispose()メソッドへの呼び出し(暗黙的または明示的) を遅らせる必要があります。
Dispose()メソッドのコードは非同期で実行する必要があり、すべての非同期呼び出しが解決されるのは一度だけだと思います。これを達成するための最良の方法を知りたいです。
ありがとう。
注: 簡単にするために、Dispose() メソッドの実装方法の詳細には触れていません。実生活では、私は通常Dispose パターンに従います。
更新:返信ありがとうございます。あなたの努力に感謝します。chakrit がコメントしたように、非同期 DoSomething への複数の呼び出しを行うことができる必要があります。理想的には、次のようなものがうまく機能するはずです。
カウンティング セマフォを調べてみます。探しているものと思われます。また、設計上の問題である可能性もあります。都合がよければ、実際のケースとMyClassが実際に行っていることをいくつか紹介します。
sql - 非同期選択db2
db2は非同期SQL操作をサポートしていますか?つまり、2,000万行のテーブルでselect stmtを実行し、500万行が戻ってくると予想している場合です。JDBCを介してこのクエリを実行する場合、dbがクエリを実行し、バックエンドスレッドでResultSetに非同期でデータを入力している間、コントロールがすぐに返されるようにします。
SQL Serverサポートのようないくつかのデータベースを知っていますが、DB2でサポートされていますか?
〜スリ
c# - ThreadPool WorkItem の完了/完了待ちの検出
なんらかの理由で、は作業項目に やその他ThreadPool
のハンドルをQueueWorkItem
返さないためIAsyncResult
、作業が完了するまで待機することができます。メソッドはありRegisterWait...
ますが、a を渡す必要がWaitHandle
あり、それらの作成にはコストがかかります (ドキュメントを参照してください。要求さIAsyncResult
れるまで a の作成を遅らせることをお勧めします)。WaitHandle
Task Parallel Library はこの不足を修正しますが、それが利用可能になるまでには長い時間がかかります。では、この設計に問題はありますか。
編集: ThreadPool の代わりに非同期デリゲートを使用するときに発生する懸念について、フォローアップの質問をしました。
c# - IAsyncResult を明示的に実装する
私は一般的に、インターフェースを部分的に実装することに慎重です。ただし、IAsyncResult
いくつかのまったく異なる使用パターンをサポートしていることを考えると、これは少し特殊なケースです。を呼び出したり、 を使用したり、ポーリングしたりするのではなく、 AsyncState
/パターンをどのくらいの頻度で使用/使用していますか?AsyncCallback
EndInvoke
AsyncWaitHandle
IsCompleted
関連する質問: ThreadPool WorkItem が完了したことを検出する/完了を待機しています。
このクラスを検討してください(非常に近似、ロックが必要です):
(ドキュメントで説明されているように、遅延して作成された)とがWaitHandle
ありますが、 (?)の賢明な実装は見当たりません。それで、それを実装するのは理にかなっていますか? Parallel Extensions ライブラリでは が実装されていますが、暗黙的に実装されているだけであることに注意してください。IAsyncResult
IsCompleted
AsyncState
{return null;}
IAsyncResult
Task
IAsyncResult
IsCompleted
c# - SSISパッケージを非同期的に呼び出す
LoadPackage(...)を使用してSSISパッケージを呼び出しています。
この呼び出しを非同期呼び出しにすることは可能ですか?
c# - マルチスレッド方式での BeginInvoke/EndInvoke の使用。AsyncCallback、AsyncWaitHandle、IsCompleted はどのように相互作用しますか?
この質問に対する Andreas Huber の回答Concurrent<T>
により、ThreadPool の代わりに非同期デリゲートを使用して実装するというアイデアが得られました。AsyncCallback
ただし、が に渡されたときに何が起こっているのかを理解するのが難しくなっています。BeginInvoke
特に、複数のスレッドが にアクセスしている場合はそうIAsyncResult
です。残念ながら、このケースは MSDN や私が見つけたどこでもカバーされていないようです。さらに、私が見つけたすべての記事は、クロージャーとジェネリックが利用可能になる前に書かれたか、単にそのように見えます。いくつかの質問があります (答えが正しいことを願っていますが、がっかりすることは覚悟しています):
1) クロージャを AsyncCallback として使用すると違いはありますか?
(うまくいかないことを願っています)
2) スレッドが で待機している場合、
a) コールバックが開始する前、または b) 終了後にAsyncWaitHandle
通知されますか?
(できれば b)
3) コールバックが実行されている間、何が返されますか? 私が見ることができる可能
性: b) ; c)コールバックが EndInvoke を呼び出す前、後。
(願わくば b または c)
4)呼び出された後にスレッドが待機すると、スローされますか?
(そうではないことを願っていますが、私はそう期待しています)。IsCompleted
true
false
false
true
DisposedObjectException
AsyncWaitHandle
EndInvoke
答えが私が望んでいるものであれば、これはうまくいくようです:
質問 1 から 3 への回答が私が望んでいるものである場合、私が見る限り、ここにレース条件はないはずです。
multithreading - ビジー カーソル - なぜ?
ビジーカーソルが正当であると考えるシナリオを誰か教えてもらえますか? ユーザーの観点からは、常に悪い考えのように感じます。明確化: ビジー カーソルとは、ユーザーがアプリケーションを操作できなくなったときに、砂時計のマウス ポインターを動かして口笛を吹くことしかできないことを意味します。
python - socket.shutdown と socket.close
私は最近、次のようなコードを少し見ました (もちろん、sock はソケット オブジェクトです)。
ソケットでシャットダウンを呼び出してから閉じる目的は何ですか? 違いがある場合、このソケットはノンブロッキング IO に使用されています。
asynchronous - UML アクティビティ図に非同期操作を表示する方法
クライアントとサーバーの接続を確立するコードをよりよく理解するために、描画/文書化しようとしています。別々のスレッド (接続スレッド、データ受信スレッドなど) で非同期に実行される操作がいくつかあります。
それらを別々の図に表示する必要がありますか? 全体像を把握するために単一の図にまとめたいのですが、アクティビティ図での表現方法がわかりません。