2

J'ai une NSOperationQueue avec un certain nombre de NSOperations dedans. Je veux m'assurer qu'une partie particulière du code n'est pas exécutée en parallèle. J'utilise un objet NSLock comme ceci:NSOperation ne génère pas un nouveau thread?

[myLock lock] 
some critical code 
[myLock unlock] 

Malheureusement, au lieu d'un blocage d'appel "lock" Je reçois l'erreur suivante:

- [verrouillage NSLock]: blocage ('(null)')

Après quelques recherches, j'ai remarqué que tous les NSOperations semblent fonctionner dans le même thread. Je dessinais cette conclusion après l'enregistrement de l'ID du sujet avec:

NSLog(@"Thread %@\n", self, [NSThread currentThread]); 

Toutes les opérations semblent fonctionner dans le même fil. Même s'ils fonctionnent en parallèle en tant qu'opérations.

Est-ce que cela a du sens? Je suis un peu confus. Est-ce que je manque quelque chose? Voyez-vous un problème avec NSOperation et NSLock ensemble? (Si non, alors je suis sûr que l'erreur est dans mon code)

+1

Pouvez-vous poster plus de code? Plus de contexte? Aussi, est-ce sur Mac OS X ou iOS? –

Répondre

4

Je l'ai résolu. J'utilise ASIHTTPRequest en dessous. Apparemment, tous les appels HTTP sont effectués dans le même thread à moins que vous ne surchargiez la requête "+ (NSThread *) threadForRequest: (ASIHTTPRequest *)".

Désolé.

+0

mhh. Comment puis-je indiquer que cette question est répondue maintenant? Je ne peux pas supprimer la question ni accepter ma propre réponse. :-( –

+1

attendez deux jours afin de marquer comme réponse – rano

Questions connexes