Dans l'objectif C, je fais mon programme à attendre en utilisant en boucleUtilisation de while (true) une approche valide dans la programmation iOS?
fonctiondoInitialize()
{
dispach_group_t loadDataGroup=dispatch_group_create();
dispatch_group_async(loadDataGroup,...get_global_queue(..),0),^{
renewauth();
}
dispatch_group_notify(loadDataGroup,...get_global_queue(..),0),^{
//Do other tasks once renew session has completed...
}
}
renewauth()
{
RenewAuthTokenInProgress=true;
startRenewThread();
**while (RenewAuthTokenInProgress);**
}
À son tour startRenewThread() effectue également dispatch_async opération à l'intérieur. Donc je dois attendre renewAuth().
Et tâche Async startRenewThread mettra à jour la variable bool une fois le renouvellement est réussi.
Y at-il une meilleure approche de le faire autre que dispatch_groups? Et est-il bon que les autres threads attendent avec while (true)?
L'attente occupée est une idée terrible. Pourquoi exécutez-vous cette fonction de renouvellement en arrière-plan si vous voulez bloquer jusqu'à ce que ce soit fait de toute façon? – Thilo
Et si vous allez sur la route asynchrone, qu'est-ce qui ne va pas avec 'dispatch_groups'? – Thilo
En supposant que RenewAuthTokenInProgress reste vrai pendant un certain temps, alors oui votre iPhone va devenir chaud. Vous allez exécuter l'un des cœurs à 100%. Cela va aussi aplatir votre batterie. – TJA