On Dec 17, 2009, at 8:55 AM, Jens Alfke wrote:
> On Dec 16, 2009, at 10:04 PM, PCWiz wrote:
>> I'm not using NSLock or NSRecursiveLock directly. I'm using @synchronized on 
>> an object that multiple threads acess, to allow only one thread to access 
>> the object at a time.
> 
> The fact that the description of the lock is "<NSRecursiveLock: 0x16c2340> 
> '(null)'" makes me suspect that you're synchronizing on a nil pointer, i.e. 
> that when you call
>       @synchronized(foo) { ... }
> the value of foo is nil. I'm pretty sure that's illegal, and I would have 
> thought it would throw an exception, but maybe not. Try putting a check above 
> the block, something like
>       NSAssert(foo!=nil, @"no foo");

@synchronized does not use NSRecursiveLock. Any NSRecursiveLock problems you 
have are unrelated to @synchronized.

@synchronized(nil) silently locks nothing. You can set environment variable 
OBJC_DEBUG_NIL_SYNC=YES to turn on logging for @synchronized(nil).


-- 
Greg Parker     gpar...@apple.com     Runtime Wrangler


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to