GCD Atomic Queue
Flo
Membre
Bonjour,
je suis en train de découvrir GCD et j'aurais une petite question qui me turlupine à vous soumettre :P
J'ai défini mes opérations et dépendances(->) comme suit :
op1a <- op1b
op2a <- op2b
op3a <- op3b
queue A : {op1a, op2a, op3a}
queue B : {op1b, op2b, op3b}
Je voudrais que chaque opération de la file B s'exécute de manière atomic une fois que sa dépendance est résolue.
En gros, je ne veux pas qu'il puisse y avoir deux opérations de la file B(qui n'ont plus de dépendance) à s'exécuter de manière concurrente.
J'ai lu dans la doc qu'il fallait sous-classer NSOperation et re-définir la méthode isConcurrent mais il se trouve que cette méthode est ignoré par GCD sous 10.6.
Du coup ma question est la suivante : comment faire pour que deux opérations de la file B qui n'ont plus de dépendance ne s'exécutent pas de manière concurrente ?
Merci d'avance pour vos réponses
je suis en train de découvrir GCD et j'aurais une petite question qui me turlupine à vous soumettre :P
J'ai défini mes opérations et dépendances(->) comme suit :
op1a <- op1b
op2a <- op2b
op3a <- op3b
queue A : {op1a, op2a, op3a}
queue B : {op1b, op2b, op3b}
Je voudrais que chaque opération de la file B s'exécute de manière atomic une fois que sa dépendance est résolue.
En gros, je ne veux pas qu'il puisse y avoir deux opérations de la file B(qui n'ont plus de dépendance) à s'exécuter de manière concurrente.
J'ai lu dans la doc qu'il fallait sous-classer NSOperation et re-définir la méthode isConcurrent mais il se trouve que cette méthode est ignoré par GCD sous 10.6.
Du coup ma question est la suivante : comment faire pour que deux opérations de la file B qui n'ont plus de dépendance ne s'exécutent pas de manière concurrente ?
Merci d'avance pour vos réponses
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il faut que la NSOperationQueue soit l'équivalent d'une serial queue de libdispatch.
Pour ce faire, il faut définir la property maxConcurrentOperationCount à 1.