Обращаясь к следующему посту, который заставляет поверить, что задача .NET выполняется без участия собственных потоков ОС. Это правда?
Разница между задачей (System.Threading.Task) и потоком
РЕДАКТИРОВАТЬ
При рассмотрении повторяющихся вопросов я не смог найти ответ, непосредственно касающийся вопроса о том, что создание экземпляра класса .NET Task в конечном итоге будет выполнено в собственном потоке ОС. Они относятся к потокам, но не различают управляемые и собственные потоки ОС или просто управляемые потоки. Единственное, что может быть дубликатом, - это мой собственный ответ на один из этих вопросов.
Но, копаясь в себе, казалось бы, что в ".NET" нет "магии", позволяющей избежать нативных потоков ОС. В ядре Windows нет изменений, позволяющих это сделать. Это согласуется с моим собственным опытом ОС пару десятилетий назад. Короче говоря, нет ни одного кода приложения, который кто-либо может написать, который не работает в собственном потоке ОС Windows.
О процессах и потоках Управляемый поток
Также:
Ответ: это зависит.
Задачи, которые включают некоторую вычислительную работу, выполняются в потоке, и обычно это будет поток из пула потоков.
Долгосрочные задачи, т. TaskCreationOptions.LongRunning
Созданные с помощью параметра TaskCreationOptions.LongRunning
запускаются в выделенном потоке, который создается для них.
Задачи ввода/вывода, такие как await stream.ReadAsync()
вообще не имеет потока. Операция отправляется на устройство ввода-вывода, и процессор может делать все, что пожелает. Только когда устройство готово с запрошенными данными, оно прерывает ЦП, выполняет некоторую низкоуровневую обработку, и в конечном итоге ОС получает поток из пула потоков, чтобы выполнить задачу и сделать результат доступным для вашей программы. Подробнее здесь.