2011-04-18 4 views
0

-> Je fais une application iphone -> J'ai un scénario où je cours nombre de threads en arrière-plan.Comment faire tous les threads de sommeil - iphone

-> Supposons maintenant que sur le thread principal je reçois un événement et que je doive exécuter une action dans un nouveau thread d'arrière-plan.

-> Mais lorsque j'effectue une action sur le nouveau thread d'arrière-plan à ce moment mes autres threads doivent mettre en pause/sleep jusqu'à ce que l'action soit terminée.

-> Une fois l'action terminée, tous les autres threads doivent reprendre leur fonctionnement.

Je vais explorer plus à ce sujet, mais si quelqu'un a une idée s'il vous plaît fournir une contribution.

Merci

+0

Vous avez raison, j'ai retiré ma réponse, avez-vous envisager d'utiliser threads natifs C, ou avez-vous pensé à un objet partagé entre tous les fils disons comme un drapeau, lorsque vous définissez cette Objet à un drapeau actuel tous les threads de travail tiennent jusqu'à un autre ensemble pour cet objet? J'avais l'habitude de faire ce mécanisme en C# –

+0

Pouvez-vous décrire plus en détail ce que vous voulez faire? Que font les threads de fond? Pourquoi ont-ils besoin de faire une pause? Il peut y avoir une solution plus facile que celle suggérée jusqu'ici. – kubi

Répondre

0

signalisation Habituellement peut être fait en utilisant des conditions de pthread, en utilisant mutex pour la synchronisation, comme ceci:

Créer des variables Mutex et Condition:

pthread_mutex_init(&mutex, NULL); 
    pthread_cond_init(&cond, NULL); 

discussion 1: Attendez le signal :

pthread_cond_wait(&cond, &mutex); 

Fil 2: Signaler le fil wai ting pour connaître l'état:

pthread_mutex_lock(&mutex); 
    pthread_cond_signal(&cond); 
    pthread_mutex_unlock(&mutex); 
Questions connexes