GCD Atomic Queue

FloFlo Membre
11:19 modifié dans API AppKit #1
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  :D

Réponses

  • FloFlo Membre
    11:19 modifié #2
    J'ai trouvé  :D

    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.


    Note: Setting the maximum number of operations to 1 effectively creates a serial queue for processing operations.
Connectez-vous ou Inscrivez-vous pour répondre.