4

ManagedThreadID を使用してスレッドのコレクションを追跡しています。これにより、コンテキスト オブジェクトは、どのスレッドが処理を行っているかを知ることができます。

しかし、私は、コンテキスト オブジェクトが、それらのために何らかのスレッドが動作しているかどうかをテストできるようにしたいと考えるようになりました。ID は単なる整数であるため、値がゼロであることをテストできます。しかし、ゼロは可能なスレッド ID ですか??

明らかにそうである場合、スレッドが何らかのコンテキスト作業を行うために「割り当てられている」かどうかをテストすることは、このクイックチェックが役に立たないことを意味し、代わりにスレッドをチェックする必要があります (それらがすべて使用しているコンテキストを確認するため)。ありがとう。

4

2 に答える 2

5

文書化されていません。SSCLI20 実装が、使用している CLR のバージョンに対して依然として正確である場合、可能性は非常に高く、0 は有効な ManagedThreadId ではないと想定しても問題ありません。clr/src/vm/threads.h の内部 IdDispenser ヘルパー クラスは、その NewId() 関数を使用してマネージド スレッド ID を生成します。エラー表示として 0 の戻り値を使用します。

于 2013-09-18T15:21:26.303 に答える
0

ゼロを気にする必要はありません。アイドルスレッド用に予約されています。

于 2013-09-18T14:51:12.053 に答える