它有效吗
SpinWait.SpinUntil(() => myPredicate(), 10000)
超时10000ms
要么
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的所有收益可能都不是一个好的用法模式?这是一个有效的假设吗?
您喜欢哪种方法,为什么?还有另一种更好的方法吗?
更新-变得更加具体:
有没有办法让BlockingCollection Pulse在达到限制容量时成为休眠线程?我宁可避免像马克·格雷夫(Marc Gravel)所说的那样忙碌地等待。