Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c#中,如何检查线程池中的线程是工作线程还是I/O线程?_C#_Multithreading_Io_Threadpool - Fatal编程技术网

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

在c#中,如何检查线程池中的线程是工作线程还是I/O线程?,c#,multithreading,io,threadpool,C#,Multithreading,Io,Threadpool,是否可以识别线程是辅助线程还是I/O 我知道密码 Thread.CurrentThread.IsThreadPoolThread 此代码用于显示它是否是线程池线程,但似乎没有方法显示它是否是工作线程 我怎么检查?有可能吗?线程之间没有区别,除了它们所在的池,您可以在这里阅读: 线程不知道它来自的池。所以这是不可能的。-在Dynamix AX中,“工作线程”和“I/O线程”实际上没有技术上的区别。中有一种叫做。isWorkerThread,但不确定除了:)之外是否缺少任何上下文。I/O线程是执行

是否可以识别线程是辅助线程还是I/O

我知道密码

Thread.CurrentThread.IsThreadPoolThread
此代码用于显示它是否是线程池线程,但似乎没有方法显示它是否是工作线程


我怎么检查?有可能吗?

线程之间没有区别,除了它们所在的池,您可以在这里阅读:


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

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