将一个数组排序并搜索它,比在未排序的数组中进行搜索更有效吗?
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()
}
我担心如果我们讨论的超时时间超过1秒,SpinWait的所有yielding可能不是一个好的使用模式?这个假设是否正确?
你更喜欢哪种方法?为什么?还有其他更好的方法吗?
更新 - 变得更加具体:
有没有一种方法可以让BlockingCollection在达到有限容量时脉冲睡眠线程? 我情愿完全避免忙等待,就像Marc Gravel建议的那样。