私は別々のスレッドでパイプラインを処理するアプリケーションで作業しています。私のテストでは、プロセスが「軽量」であるか、またはCLRによってこれがすぐに終了すると判断された場合、CLRはこのスレッドを迅速にリサイクルし、さまざまな作業単位を同じスレッドで同時に共有できます。CLR管理スレッド:軽量プロセスと重いプロセス
逆に、処理に時間がかかったり、負荷が増えたりすると、異なるスレッドが開きます。
私にとってはすべて難しいです。TLS Thread local storageプログラミング。
実際、私のアプリケーションパイプラインは処理に時間がかかり、CLRは常に相互に1つのマネージスレッドを割り当てているようです。 BTW場合によっては、2つのパイプラインが1つの管理スレッドを共有する場合、TLS変数を使用するため衝突します。
結局のところ本当の疑問は...私は、プロセスがある程度の時間を要する場合、それは常に自分のスレッドを使用するか、それとも狂っているのだろうという前提をすることはできますか?
私が管理しているスレッドを.net 3.5で読んでいるのは、一種のブラックボックスで動作するようなものです。だからおそらくこの質問は決して本当に返答することはできません。
EDIT:私は辞書の定義結果タスクマネージャでは識別できないコンピュータプロセスをもたらす行動、変更、または一連の機能にrefereingいプロセスで
。
'プロセス'を定義します。あなたのプロセスの使用は、標準の定義と多少異なるようです。 –
変数が実際にはスレッドごとではない場合は、スレッドローカルストレージを使用しないでください。アクティビティごとに必要な場合は、変数を特定のアクティビティに関連付けます。 – dlev
この質問を解読するのは難しいです。実行中のスレッドがタイムリーに完了しないと、スレッドプールマネージャが追加のスレッドを開始しているのを見ているだけです。 –