Est-il efficace pour
SpinWait.SpinUntil(() => myPredicate(), 10000)
pour un délai d'attente de 10000ms
ou
Est-il plus efficace d'utiliser Thread.Sleep
de vote pour le même état
Par exemple quelque chose le long des lignes suivantes SleepWait
fonction de:
public bool SleepWait(int timeOut)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while (!myPredicate() && stopwatch.ElapsedMilliseconds < timeOut)
{
Thread.Sleep(50)
}
return myPredicate()
}
Je suis préoccupé de ce que tous le rendement de l'SpinWait ne peut pas être un bon modèle d'utilisation, si nous parlons de délais d'attente de plus de 1sec? Est-ce une hypothèse valide?
L'approche qui préférez-vous et pourquoi? Est-il une autre encore meilleure approche?
Mise à jour - Deviennent de plus en plus spécifiques:
Est-il un moyen de Faire BlockingCollection Impulsion d'un thread en sommeil lorsqu'il atteint délimitée capacité? Je suis plutôt d'éviter une longue attend en tout comme Marc Gravier suggère.