Nó có hiệu quả không
SpinWait.SpinUntil(() => myPredicate(), 10000)
trong thời gian chờ 10000ms
hoặc là
Có hiệu quả hơn không khi sử dụng tính năng Thread.Sleep
thăm dò cho cùng một điều kiện Ví dụ: một cái gì đó dọc theo các dòng của SleepWait
hàm sau :
public bool SleepWait(int timeOut)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while (!myPredicate() && stopwatch.ElapsedMilliseconds < timeOut)
{
Thread.Sleep(50)
}
return myPredicate()
}
Tôi lo ngại rằng tất cả hiệu suất của SpinWait có thể không phải là một kiểu sử dụng tốt nếu chúng ta đang nói về thời gian chờ trên 1 giây? Đây có phải là một giả định hợp lệ?
Bạn thích cách tiếp cận nào hơn và tại sao? Có cách tiếp cận nào khác tốt hơn không?
Cập nhật - Trở nên cụ thể hơn:
Có cách nào để biến BlockingCollection Pulse thành một chuỗi ngủ khi nó đạt đến dung lượng giới hạn không? Tôi muốn tránh tất cả những sự chờ đợi bận rộn như Marc Gravel gợi ý.