2

Juval Lowy のテキスト "Programming WCF Services" で、彼は次のように書いています。

...クライアントが AsyncPattern を true に設定して Begin() 形式のメソッドを呼び出すと、WCF はサービスでその名前のメソッドを直接呼び出さないように指示されます。代わりに、WCF はスレッド プールのスレッドを使用して、基になるメソッドを同期的に呼び出す必要があります。同期呼び出しは、呼び出し元のクライアントではなく、スレッド プールからスレッドをブロックします (p441)。

各非同期メソッドの実行が完了すると、静かにプールに戻る代わりに、ワーカー スレッドは完了コールバック (p447) を呼び出します。

私が聞いているのは、呼び出し元のスレッドが続行している間、(ワーカー?) スレッドがブロックされているということです。これは、クライアントからこのような (実行時間の長い) 非同期呼び出しを何千回も行うと、スレッド プールのパフォーマンスが低下し始めることを意味します。これは、スレッド プールが新しいスレッドを生成して、ブロックされているすべてのスレッドを置き換えるためです。

しかし、ジュヴァルが本を書いて以来、その話は変わったのでしょうか? Juval の言うことと矛盾する人に気付きましたが、完全に 1 年前に書かれた記事の中にあります。

ここで本当の真実は何ですか?

4

0 に答える 0