J'ai une condition if
dans mon code c. si la condition if
est vraie, je dois appeler sleep(1)
appel système et vérifier à nouveau la condition if
. Cela doit être fait pour 9 fois maximum. Si à tout moment pendant les 9 fois, la condition if
échoue je devrais revenir de la fonction. Si les 9 fois expire, je devrais appeler une autre fonction. Pour le rendre plus clair, je vais écrire le pseudo-code ci-dessous.Mise en œuvre de la logique du programme C
function1()
{
count = 0
label : if (condition)
{
count++
sleep(1);
if(count < = 9)
goto label;
}
if(count > 9)
{
return;
}
function2(); /* if(condition) failed */
return;
} /* End of function1() */
Quelle est la meilleure façon de mettre en œuvre la logique ci-dessus. Je ne préfère pas utiliser l'instruction goto
.
Cela semble bon jusqu'à maintenant, mais à moins que cela fasse partie d'un programme multithread, la condition étant une variable ne changera pas. Si sa condition multithread doit être volatile et testée en utilisant des opérations atomiques. Ce que vous avez ici est fondamentalement une implémentation brute d'un mutex/spinlock. – datenwolf
@datenwolf: Merci beaucoup. La partie d'implémentation ci-dessus ne va pas dans une application multithread. –
son point est 'condition' doit être une sorte de fonction, ou au moins mis à jour par une sorte de fonction qui n'est pas indiquée dans votre code. – falstro