NSOperation не порождает новую тему? - PullRequest
2 голосов
/ 27 ноября 2010

У меня есть NSOperationQueue с несколькими NSOperations в нем.Я хочу убедиться, что определенная часть кода не выполняется параллельно.Я использую объект NSLock следующим образом:

[myLock lock]
some critical code
[myLock unlock]

К сожалению, вместо блокирующего вызова «lock» я получаю следующую ошибку:

- [NSLock lock]: deadlock ('(null)')

После некоторого исследования я заметил, что все операции NSO, кажется, выполняются в одном потоке.Я сделал этот вывод после регистрации идентификатора потока с помощью:

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

Все операции выполняются в одном потоке.Даже если они выполняются параллельно как операции.

Имеет ли это смысл?я немного смущен.Я что-то пропустил?Видите ли вы какие-либо проблемы с использованием NSOperation и NSLock вместе?(Если нет, то я уверен, что ошибка в моем коде)

1 Ответ

4 голосов
/ 27 ноября 2010

Я решил это.Я использую ASIHTTPRequest внизу.Очевидно, что все HTTP-вызовы выполняются в одном потоке, если вы не переопределите запрос «+ (NSThread *) threadForRequest: (ASIHTTPRequest *)».

Извините.

...