В С #, как проверить, что поток из пула потоков является рабочим потоком или потоком ввода-вывода?

Можно ли распознать, что поток является рабочим или вводом-выводом.

Я знаю код

Thread.CurrentThread.IsThreadPoolThread

этот код должен показать, является ли это потоком пула потоков, но, похоже, нет метода, чтобы показать, является ли он рабочим потоком.

Как я могу это проверить? Является ли это возможным?


person roast_soul    schedule 05.08.2014    source источник
comment
stackoverflow .com / questions / 2099947 / - There is really no technical difference between 'worker thread' and 'I/O thread' в Dynamix AX есть что-то, называемое .isWorkerThread, но я не уверен. Если мне не хватает какого-либо контекста, кроме этого :)   -  person Tats_innit    schedule 05.08.2014
comment
Поток ввода-вывода - это поток, который выполняет обратные вызовы ввода-вывода. Таким образом, любые обратные вызовы асинхронного ввода-вывода будут обрабатываться в потоках ввода-вывода ThreadPool. Если вам нужно знать, в каком потоке вы работаете вне самого метода обратного вызова, вам может потребоваться переработка :) По крайней мере, вы можете передать эту информацию в качестве параметра, если это необходимо. Какую проблему вы пытаетесь решить?   -  person Luaan    schedule 05.08.2014
comment
@Luaan, спасибо за ответ. Я просто тестирую код, чтобы увидеть, какой поток обрабатывает обратный вызов.   -  person roast_soul    schedule 05.08.2014
comment
Что ж, обратите внимание, что разделение потоков пула потоков на рабочие и ввод-вывод в основном является деталью реализации. Он может измениться в любой момент, поэтому вам не стоит особо полагаться на особенности - новые пулы могут быть добавлены в любое время, а существующие также объединены. Вместо этого запомните шаблоны - в асинхронном обратном вызове вы хотите делать как можно меньше работы, если вам нужно сделать больше, чем немного, планируйте работу дальше (либо используя ThreadPool.QueueWorkerItem, Task.Run, либо какой-либо другой механизм, если у вас есть собственный планирование например).   -  person Luaan    schedule 05.08.2014


Ответы (1)


Нет никакой разницы между потоками, за исключением пула, в котором они были / находятся, как вы можете прочитать здесь: Простое описание рабочих потоков и потоков ввода-вывода в .NET

Поток ничего не знает о пуле, из которого он пришел. Так что это невозможно.

person Emond Erno    schedule 05.08.2014