2011-01-12 1 views
1

J'ajoute un bloc à une file d'attente (pas la file d'attente principale), en utilisant Grand Central Dispatch. Ce bloc a une boucle et entre chaque passage de la boucle un petit délai de 0,02 secondes est requis. J'utiliseiphone - est-il correct d'utiliser usleep sur un thread secondaire sur Grand Central Dispatch?

dispatch_async(myOwnQueue, ^{ 
    // begin loop 
    // do stuff 
    usleep(20000); 
    // end loop 
}); 

dans cette file d'attente. Comme ce n'est pas la file d'attente principale, cela ne bloquera pas le thread principal.

Le problème est que Xcode se plaint: avertissement: déclaration implicite de la fonction « usleep »

Y at-il d'autre moyen de le faire?

merci.

+0

Ne sera pas dispatch_after une meilleure solution? – NSIntegerMax

+0

Ouais, l'attente n'est pas la réponse. Utilisez dispatch_after ou un NSTimer, ou un timer de dispatch_source, mais pas occupé-attendez sur les threads GCD. GCD fonctionne mieux lorsque les éléments de travail que vous lui soumettez ne bloquent pas. – ipmcc

Répondre

3

Vous avez juste besoin d'inclure l'en-tête approprié avant d'appeler usleep():

#include <unistd.h> 
+0

ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh j'adore SO et tous les experts qu'elle rejoint !!! Merci! – SpaceDog

Questions connexes