【问题标题】:In c#, how to check the thread from threadpool is a worker thread or an I/O thread?在c#中,如何检查线程池中的线程是工作线程还是I/O线程?
【发布时间】: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.QueueWorkerItemTask.Run 或其他一些机制,如果例如,您有自己的日程安排)。

标签: c# multithreading io threadpool


【解决方案1】:

线程之间没有区别,除了它们所在的池之外,您可以在此处阅读:Simple description of worker and I/O threads in .NET

线程不知道它来自的池。所以这是不可能的。

【讨论】:

    猜你喜欢
    • 2013-08-05
    • 2011-01-07
    • 2012-06-24
    • 1970-01-01
    • 2013-04-05
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多