Hi List,

Having read the Apple documentation and beginner guides on threading, I am still a little confused about protecting my variables from access by multiple threads.

A sample of my code is as follows:

@interface Class1 : NSObject
{
        XMLFetcherParser *fetcherParser;
}
- (void)doBackgroundFetch;
- (void)receiveItem:(Item *)newItem;
@end

@implementation Class1

- (void)doBackgroundFetch
{
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        
        fetcherParser = [[XMLFetcherParser alloc] init];
        [fetcherParser doYourThing];

        [fetcherParser release];
        [pool release];
}

- (void)receiveItem:(Item *)newItem
{
        // Add newItem to an array
}

@end

For usage, the summary is that I do:

[NSThread detachNewThreadSelector:@selector(doBackgroundFetch) toTarget:self withObject:nil];

and then -[XMLFetcherParser doYourThing] repeatedly sends newly created objects to receiveItem: using the performSelectorOnMainThread method. Once the spawned thread has done this, it never uses the sent object again.


My question is how should I protect this code from thread related problems? Do I just place @synchronized(){} blocks around the code in receiveItem: and it's counterpart in the spawned thread? Or is that just plain wrong? Or (likely) am I barking up totally the wrong tree?


Regards,

Ben

_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to