Эффективно ли это для
SpinWait.SpinUntil(() => myPredicate(), 10000)
для тайм-аута 10000 мс
или
Насколько эффективнее использовать опрос Thread.Sleep для того же условия
Например, что-то по строкам следующей функции SleepWait:
public bool SleepWait(int timeOut)
{
    Stopwatch stopwatch = new Stopwatch(); 
    stopwatch.Start();
    while (!myPredicate() && stopwatch.ElapsedMilliseconds < timeOut)
    {
       Thread.Sleep(50)
    }  
    return myPredicate()
}
Я обеспокоен тем, что все уступки SpinWait не могут быть хорошим шаблоном использования, если мы говорим о тайм-аутах в течение 1 секунды? Действительно ли это предположение?
Какой подход вы предпочитаете и почему? Есть ли еще лучший подход?
Обновить. Становится более конкретным:
Есть ли способ сделать BlockingCollection Pulse спальным потоком, когда он достигнет ограниченной емкости? Я предпочитаю избегать оживленного ожидания, поскольку Марк Гравел предлагает.