Например, если бы мне пришлось выбирать между этими двумя, я должен посвятить Thread
для периодической задачи очистки, или я должен просто использовать цикл Task
, который никогда не заканчивается?
ПосколькуThread
спал бы большую часть времени, лишь изредка просыпался с сигналом (не обязательно в любое конкретное время), чтобы выполнить небольшую очистку, я чувствую, что поток будет потрачен впустую. Один поток может не иметь большого значения, но я потенциально буду иметь десятки из них.
Вместо создания выделенного Thread
, который обычно спит и потребляет ресурсы, я хотел бы использовать Task
, который зацикливаетсявечно, ожидая (асинхронно) сигнала «пробуждения» во время каждой итерации.
Это не будет «длительной» задачей (т. е. она не будет привязана к процессору очень долго), но этобудет «долгоживущей» задачей (т. е. она никогда не завершится и будет просто отслеживаться в некоторой очереди ожидания).
Предположим, я запускаю многие из этих «долгоживущих» задач. Буду ли я сталкиваться с какими-либо проблемами с производительностью при таком подходе в результате просто существующих долгоживущих задач? Кажется, проще управлять работой с Задачами и запускать их в потоках ThreadPool. Работа не требует какого-либо особого приоритета над другой работой, которая может также выполняться в потоках ThreadPool.