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 回答