Je dois implémenter une fonction simple appelée à partir de plusieurs threads. La logique de la fonction est simple - pensez aux courses de chevaux - seul le premier cheval peut obtenir la médaille d'or une fois que nous avons un gagnant la course est terminée.Comment implémenter une fonction multithread simple
class ConditionalOrderGroup
{
private volatile bool _locked = false;
private List<ConditionalOrder> _ConditionalOrderList = null;
public bool LockGroup(ConditionalOrder initiator)
{
// this is finishline - we need to let only the first one proceed
if (_locked)
return false;
else
{
_locked = true;
}
// this is what winner gets
foreach (ConditionalOrder order in _ConditionalOrderList)
{
\\ cancel other orders
}
return true;
}
}
Je ne suis pas satisfait
if (_locked)
return false;
else
{
_locked = true;
}
si deux ordres peuvent passer si contrôle et passez à autre . Comment réécrire ce code sans utiliser verrouiller déclaration?
MISE À JOUR Je veux dire que mon but n'est pas d'utiliser une méthode de blocage comme une instruction lock.
Il a dit sans utiliser les verrous. – Martin
Super! C'est exactement ce dont j'ai besoin d'une méthode non bloquante. –
@Martin: Il a dit sans l'instruction * lock *. Ce qu'il fait déjà est un verrou (bien que brut) en soi. – Mizipzor