Простое описание рабочих и потоков ввода / вывода в .NET
Очень сложно найти подробное, но простое описание рабочих и потоков ввода-вывода в .NET
Что мне ясно относительно этой темы (но не может быть технически точным):
Рабочие темы - это темы, которыедолжен использовать процессор для своей работы;Потоки ввода / вывода (также называемые «потоками портов завершения»)должен использовать драйверы устройств для своей работы и, по сути, «ничего не делать», только следить за завершением операций без использования процессора.Что не понятного:
Хотя метод ThreadPool.GetAvailableThreads возвращает количество доступных потоков обоих типов, похоже, что нет общедоступного API для планирования работы для потока ввода-вывода. Вы можете только вручную создать рабочий поток в .NET?Кажется, что один поток ввода-вывода может контролировать несколько операций ввода-вывода. Это правда? Если да, то почему у ThreadPool по умолчанию так много доступных потоков ввода-вывода?В некоторых текстах я читал этот обратный вызов, запускаемый после завершения операции ввода-вывода потоком ввода-вывода. Это правда? Разве это не работа для рабочего потока, учитывая, что этот обратный вызов является операцией процессора?Чтобы быть более конкретным - асинхронные страницы ASP.NET пользовательские потоки ввода-вывода? Что именно повышает производительность при переключении работы ввода-вывода в отдельный поток вместо увеличения максимального числа рабочих потоков? Это потому, что один поток ввода-вывода контролирует несколько операций? Или Windows делает более эффективное переключение контекста при использовании потоков ввода / вывода?