1

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

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

4

1 回答 1

4

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

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

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

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

一般来说,无论是创建一个新线程还是重用一个新线程,对您的代码来说都无关紧要。如果它确实重要,则表明您的代码有问题,您应该仔细查看您所依赖的内容以及原因。

于 2013-03-28T13:50:27.623 回答