零是一个可能的ManagedThreadID

时间:2013-09-18 14:46:14

标签: vb.net multithreading

我使用ManagedThreadID跟踪线程集合。这允许我的上下文对象知道哪些线程正在为它们工作。

但是我已经到了这样的程度,我希望上下文对象能够测试任何线程是否正在为它们工作。由于ID只是整数,我可以测试值为零。但是零是一个可能的线程ID ??

显然,如果是,那么测试一下线程是否被“分配”来执行一些上下文工作将意味着这种快速检查是不行的,我需要检查线程(以查看它们都使用的是什么上下文) 。感谢。

2 个答案:

答案 0 :(得分:4)

没有证件。如果SSCLI20实现对于您正在使用的CLR版本仍然准确,可能性非常高,那么可以假设0不会是有效的ManagedThreadId。 clr / src / vm / threads.h中的内部IdDispenser帮助程序类使用其NewId()函数生成托管线程ID。使用返回值0作为错误指示。

答案 1 :(得分:1)

你不必担心零。它是为空闲线程保留的。