我有一个服务应用程序,我希望每个条目/调度都与某种上下文相关联。我注意到,尽管有时当“创建”新线程时,系统似乎只是在重新使用现有线程。
当我创建一个新的线程/任务时,是否有一些我可以获得的唯一信息表明我是在线程 A 上还是在线程 B 上(即使 CLR 选择使用相同的线程)?
最佳答案
当您创建一个新线程时,它总是会创建一个新线程。
当您使用线程池线程时,您有意不创建新线程,而是重新使用池中的线程。
当您使用 Task
时,默认情况下,它将使用线程池线程,除非指定了 LongRunning
任务创建/继续选项。
您可以使用 Thread.CurrentThread.ManagedThreadId
获取当前线程的 ID,但除了用于调试/开发目的之外,您可能不应该依赖它。
一般来说,创建新线程还是重新使用线程对您的代码来说无关紧要。如果它确实很重要,则表明您的代码有问题,您应该仔细查看您所依赖的内容以及原因。
关于c# - 您如何跟踪线程/线程上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683505/