Question

I have a NSOperationQueue with a number of NSOperations in it. I want to ensure that a particular part of the code is not executed in parallel. I use a NSLock object like this:

[myLock lock]
some critical code
[myLock unlock]

Unfortunately instead of a blocking "lock" call I get the following error:

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

After some investigation I noticed that all NSOperations seem to run in the same thread. I drew that conclusion after logging the thread id with:

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

All operations seem to run in the same thread. Even though they are running in parallel as operations.

Does that make sense? I am a little confused. Do I miss something? Do you see any problem with using NSOperation and NSLock together? (If not, then I am sure the error is in my code)

Was it helpful?

Solution

I solved it. I am using ASIHTTPRequest underneath. Apparently all HTTP calls are made in the same thread unless you override "+ (NSThread *)threadForRequest:(ASIHTTPRequest *)request".

Sorry.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top