在C#中,如何检查来自线程池的线程是工作线程还是I/O线程?

4

如何识别一个线程是工作线程还是I/O线程?

我知道这段代码:

Thread.CurrentThread.IsThreadPoolThread

这段代码是用来判断是否为线程池线程,但似乎没有方法可以显示它是否为工作线程。

我该如何检查它?是否有可能实现?


在.NET中,“工作线程”和“I/O线程”之间实际上没有技术上的区别。在Dynamix AX中,有一个叫做“.isWorkerThread”的东西,但我不确定是否除此之外还有其他上下文。:) - Tats_innit
I/O线程是执行I/O回调的线程。因此,任何异步I/O回调都将在线程池I/O线程上处理。如果您需要在回调方法本身之外知道自己在哪个线程上运行,那么您可能需要重新设计 :) 至少,如果需要,您可以将该信息作为参数传递。您试图解决什么问题? - Luaan
@Luaan,感谢您的回答。我刚刚测试了一些代码,以查看哪种线程处理回调。 - roast_soul
1
请注意,将线程池线程分为工作线程和 I/O 线程是一种实现细节。它可能随时更改,因此您不应该依赖具体细节 - 新的线程池可以随时添加,并且现有的线程池也可以合并。请记住模式 - 在异步回调中,您只想尽可能少地执行工作,如果需要执行的工作超过一点,请进一步安排工作(例如使用 ThreadPool.QueueWorkerItemTask.Run 或其他机制,如果您有自己的调度)。 - Luaan
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接