Hi, I was confused by this:
> It also doesn't make sense to synchronize on the myDict object. That's what > is in flux. You should synchronize on "self", the object which owns and > manages myDict. Surely as long as every access to the dictionary is @synchronized to the same entity it’s fine? The way I’d atcheive this is to make the NSMutableDictionary a private property: @property (nonatomic,strong) NSMutableDictionary* pDictX; and define public methods: -(void) removeObjectFromDictXWithKey:(NSString*) theKey; -(void) addObject:(id) theObject toDictXWithKey:(NSString*) theKey; -(id) getObectFromDictXWithKey:(NSString*) theKey; The body of these methods would encapsulated with @synchronized : @synchronized (self. pDictX) { // Code to Access self.pDictX } If you wanted two dictionaries to work in this pay, just define another set for pDictY, etc. Surely if you do @synchronized(self) then access to pDictX will be blocked needlessly by access to pDictY? Cheers Dave On 1 Apr 2014, at 14:45, Trygve Inda <cocoa...@xericdesign.com> wrote: >> On Apr 1, 2014, at 12:25 AM, Jens Alfke wrote: >> >>> On Mar 31, 2014, at 10:16 PM, Trygve Inda <cocoa...@xericdesign.com> wrote: >>> >>>> I need to be able to set a new myDict and not have it happen between the >>>> reading of different values from the dictionary by other threads. >>> >>> Don’t expose the dictionary in mutable form. You can’t make that thread-safe >>> unless all the clients voluntarily agree to do something like wrap their >>> usage with @synchronized blocks using the dictionary as a parameter. >> >> I didn't see mention of mutating the dictionary. It sounds like he's just >> using a setter to replace it (which also likely releases it, which makes it >> potentially unsafe). >> >> I agree, though, that properties should almost never be of mutable type. But >> making them immutable doesn't, by itself, create thread-safety. If nothing >> else, the owner could still mutate it while other threads are reading it. >> >> Regards, >> Ken >> >> > Yes, the property is Mutable in the host app, but after being sent to the > helper app (which has multiple threads), it could just as easily be an > NSDictioanary (non-mutable). > > I just need to be 100% certain that when the helper app threads read two > values from the dictionary, that the dictionary does not change between (or > during) these two reads. > > T. > > > > > > _______________________________________________ > > 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: > https://lists.apple.com/mailman/options/cocoa-dev/dave%40looktowindward.com > > This email sent to d...@looktowindward.com _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com