【发布时间】:2014-09-27 14:29:07
【问题描述】:
是否可以识别线程是工作线程还是 I/O。
我知道密码
Thread.CurrentThread.IsThreadPoolThread
这段代码是为了显示是否是线程池线程,但是好像没有办法显示是否是工作线程。
如何查看?有可能吗?
【问题讨论】:
-
stackoverflow.com/questions/2099947/… -
There is really no technical difference between 'worker thread' and 'I/O thread'在 Dynamix AX 中有一个叫做.isWorkerThread的东西,但不确定我是否缺少除:)之外的任何上下文 -
I/O 线程是执行 I/O 回调的线程。所以任何异步 I/O 回调都将在 ThreadPool I/O 线程上处理。如果您需要知道在回调方法本身之外在哪个线程上运行,您可能需要重新设计:) 至少,如果需要,您可以将该信息作为参数传递。您要解决的问题是什么?
-
@Luaan,谢谢你的回答。我只是测试了一些代码,看看哪种线程处理回调。
-
好吧,请注意,将线程池线程分离为工作线程和 I/O 主要是实现细节。它可以随时更改,因此您不应该真正依赖细节 - 可以随时添加新池,也可以合并现有池。请记住模式 - 在异步回调中,您只想做尽可能少的工作,如果您需要做更多的工作,请进一步安排工作(使用
ThreadPool.QueueWorkerItem,Task.Run或其他一些机制,如果例如,您有自己的日程安排)。
标签: c# multithreading io threadpool