Re: NSOperation, Sqlite, library routine called out of sequence
Re: NSOperation, Sqlite, library routine called out of sequence
- Subject: Re: NSOperation, Sqlite, library routine called out of sequence
- From: Тимофей Даньшин <email@hidden>
- Date: Wed, 29 Apr 2009 23:01:01 +0400
The DatabaseManager is synchronized. If any class is to communicate
with the db, it does that through the DatabaseManager. The latter just
provides proxy methods. I think, that should result in classes getting
the instance of the DatabaseManager only when it is no longer (or not
yet) used by other classes.
+ (DatabaseManager*)sharedManager {
@synchronized(self) {
if (sharedDatabaseManager == nil) {
[[self alloc] init]; // assignment not done here
}
}
return sharedDatabaseManager;
}
+ (id)allocWithZone:(NSZone *)zone {
@synchronized(self) {
if (sharedDatabaseManager == nil) {
sharedDatabaseManager = [super allocWithZone:zone];
[sharedDatabaseManager initDb];
return sharedDatabaseManager;
}
}
return nil;
}
On Apr 29, 2009, at 10:52 PM, Greg Guerin wrote:
Тимофей Даньшин wrote:
In short, i get an error calling the same synchronized singleton
DatabaseManager from different threads.
Are you sure your database accesses are synchronized (i.e. thread-
safe)? I see nothing in the posted code that uses @synchronized or
any other locking mechanism.
-- GG
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden