On Mar 12, 2009, at 11:46 AM, McLaughlin, Michael P. wrote:

I have a "global" gFlags variable (unsigned long long) and several objects that need a pointer to it. I fill one such pointer, and reinit gFlags, via
the following code:

if (flags == nil) {
  flagPtr *flgH = &flags;
  NSData *flgsDatum =
     [[NSData alloc] initWithBytesNoCopy:flgH length:sizeof(flgH)
freeWhenDone:NO];
[[NSNotificationCenter defaultCenter] postNotificationName:@"fetchFlags"
object:flgsDatum];
  *flags = (WORKING | (*flags & LOGFILE));
}

This code appears to work successfully.  My question is whether the
notification is responded to in a synchronous manner so that the pointer is
guaranteed to be filled in by the time

  *flags = (WORKING | (*flags & LOGFILE));

is executed.


NSNotificationCenter Class Reference sez:

"A notification center delivers notifications to observers synchronously. In other words, thepostNotification: methods do not return until all observers have received and processed the notification. To send notifications asynchronously useNSNotificationQueue. In a multithreaded application, notifications are always delivered in the thread in which the notification was posted, which may not be the same thread in which an observer registered itself."
_______________________________________________

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