Мне было интересно, какой лучший способ подделать долговременную задачу, когда параллельно выполняются несколько задач. Первое, что приходит на ум, это Thread.SleepКаков наилучший способ подделать длительный процесс параллельной обработки?
public void FakeLongRunningTask()
{
Thread.Sleep(5000);
}
Однако проблема с выше код, что вызов Thread.Sleep будет блокировать этот поток, который означает, что он сдастся это время процессор срез, поэтому при вызове метода с Thread. Сон в параллельной среде так же хорош, как вообще не звонить. Поэтому, если я запускаю три задачи параллельно, и один из них вызывает Thread.Sleep, эта задача не будет влиять на производительность (хотя это может заставить CLR генерировать больше потоков !!!). Но я хочу подделать задачу, которая повлияет на общую производительность.
+1 «Задержка» идеальна, поскольку OP не хочет фактически блокировать поток. Этот ответ был бы более полным, если бы вы предоставили короткий, но полный пример. – James
Не уверен в этом. 'Task.Delay' тоже не использует CPU, не так ли? –
@MatthewWatson да ваше право, оно не используется. – terrybozzio