NSNotificationCenter 线程安全吗?

问题描述 投票:0回答:3

我可以在给定队列中发布通知并在另一个队列中接收它吗?我想使用通知来传达不同的队列,但我不确定这是否安全......

concurrency nsnotificationcenter foundation
3个回答
19
投票

不。通知在发送通知的同一线程中传递,您需要以某种方式重新发送通知才能将通知发送到您的线程。


15
投票

没有。

Apple 关于该主题的文档说:“常规通知中心在发布通知的线程上传递通知。[...]有时,您可能需要在由您确定的特定线程上传递通知[...] 在这些情况下,您必须捕获在默认线程上传递的通知并将其重定向到适当的线程。

Apple 提供的以下文档可能会有所帮助:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Notifications/Articles/Threading.html#//apple_ref/doc/uid/20001289-CEGJFDFG


0
投票

本页标题提出的问题是“

NSNotificationCenter
线程安全吗?”这个问题的答案是“是”。来自《线程编程指南》中的“线程安全摘要”:

以下类和函数通常被认为是线程安全的。您可以从多个线程使用同一个实例,而无需先获取锁。

[…]

NS通知
NS通知中心

本页正文中提出的问题已被其他回复者正确回答。

© www.soinside.com 2019 - 2024. All rights reserved.