cfischer
cfischer

Reputation: 24912

Is NSNotificationCenter thread safe?

Can I post a notification in a given queue and receive it on another? I want to use notifications to communicate different queues, but I'm not sure if this is safe...

Upvotes: 15

Views: 7841

Answers (3)

rob mayoff
rob mayoff

Reputation: 385960

The question asked in the title of this page is “Is NSNotificationCenter thread safe?” The answer to that question is YES. From “Thread Safety Summary” in the Threaded Programming Guide:

The following classes and functions are generally considered to be thread-safe. You can use the same instance from multiple threads without first acquiring a lock.

[ … ]
NSNotification
NSNotificationCenter

The question asked in the body of this page has been answered correctly by other responders.

Upvotes: 0

proxi
proxi

Reputation: 1263

No.

Apple's docs on the subject say: "Regular notification centers deliver notifications on the thread in which the notification was posted. [...] At times, you may require notifications to be delivered on a particular thread that is determined by you instead of the notification center. [...] In these cases, you must capture the notifications as they are delivered on the default thread and redirect them to the appropriate thread."

The following documentation from Apple might help: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Notifications/Articles/Threading.html#//apple_ref/doc/uid/20001289-CEGJFDFG

Upvotes: 15

gaige
gaige

Reputation: 17491

No. Notifications are delivered in the same thread that they are sent from, this you will need to re-send it in some way to get the notification to your thread.

Upvotes: 19

Related Questions