0

マシン上で実行される3つの.netプロセスがあります(各プロセス間に接続はありません)同じ.netバージョンを使用してコンパイルされたすべてのプロセス(.net 4.0としましょう)

  1. すべてのプロセスが同じ threadPool を使用していますか? threadPool インスタンスは、マシン上で実行される CLR ごとですか? または、各プロセスが独自の threadPool を保持していますか?

  2. プロセスの 1 つが .net 2.0 を使用してコンパイルされている場合 => より多くの threadPool インスタンスが存在するようになります (より多くの threadPool インスタンスがこの新しい threadPool に表示される新しいスレッドを形成するため、オーバーヘッドが増加します) ?

4

1 に答える 1

3

ThreadPool は、プロデューサー/コンシューマー キューの単なるマネージド ラッパーです。これは AppDomain ごとになります。プロセス間で共有されることはありません。通常、プロセスごとに 1 つの AppDomain がありますが、1 つのプロセスで複数の AppDomain インスタンスを作成した場合でも、ThreadPools は分離されます。ただし、マネージド スレッドとアンマネージド スレッドは同じものではないことに注意してください。マネージド スレッドがプロセスのアンマネージド スレッドによってどのように処理されるかは、実装の詳細です。

于 2012-06-02T06:28:29.160 に答える