代码之家  ›  专栏  ›  技术社区  ›  sircodesalot

如何跟踪线程/线程上下文?

  •  1
  • sircodesalot  · 技术社区  · 13 年前

    我有一个服务应用程序,我希望每个条目/调度都与某种上下文相关联。不过,我注意到,有时当“创建”新线程时,系统似乎只是在重新使用现有线程。

    当我创建一个新的线程/任务时,是否可以获得一些唯一的信息,表明我是在线程a上还是在线程B上(即使CLR选择使用相同的线程)?

    1 回复  |  直到 13 年前
        1
  •  4
  •   Servy    13 年前

    当你创建一个新的线程时,它总是会创建一个全新的线程。

    当您使用线程池线程时,您有意不创建新线程,而是重新使用池中的线程。

    当您使用 Task 默认情况下,它将使用线程池线程,除非 LongRunning 给出了任务创建/继续选项。

    您可以使用 Thread.CurrentThread.ManagedThreadId 以获取当前线程的ID,但除了用于调试/开发目的之外,您可能不应该依赖它。

    一般来说,对于您的代码来说,是创建了一个新线程还是重新使用了一个线程并不重要。如果这真的很重要,那就是你的代码出了问题,你应该仔细看看你所依赖的是什么以及为什么。