我试过了,但我认为这个通知不会到来。这是正常情况吗?

有帮助吗?

解决方案

不,此通知由 NSThread 发送。如果您使用的是普通的pthread,则不会发送它。

其他提示

来自文档

  

保护Cocoa框架   多线程应用程序,Cocoa   框架使用锁和其他形式   确保内部同步   他们的行为正确。阻止   这些锁会降低性能   但是,在单线程的情况下,   可可不会创造它们直到   应用程序产生了它的第一个新的   线程使用NSThread类。如果   你只使用POSIX生成线程   线程例程,Cocoa没有   收到它需要的通知   知道你的申请现在   多线程。当发生这种情况时   涉及Cocoa的操作   框架可能会破坏稳定或崩溃   你的申请。

     

让Cocoa知道你打算这么做   你需要使用多个线程   do使用the生成一个线程   NSThread类并让该线程   马上退出你的线程录入   点不用做任何事情。只是   使用的产生线程的行为   NSThread足以确保   Cocoa框架需要的锁   已经到位。

     

如果你不确定Cocoa是否认为   您的应用程序是多线程或   不,你可以使用isMultiThreaded   NSThread检查的方法。

还应该注意,自 NSWillBecomeMultiThreadedNotification 添加到 Foundation 以来,'时间已经改变'。多线程编程现在变得更加普遍。它现在完全在可能的范围内,甚至可能,你永远不会在应用程序中看到这个通知。现代应用程序在其生命的早期就变得多线程,可能在代码的任何部分执行之前。另外还有文档:

  

如果您正在开发Cocoa库,   你可以注册成为观察员   该   <代码> NSWillBecomeMultiThreadedNotification   如果你想在什么时候得到通知   应用程序变成多线程。您   不应该依赖这个   但是,通知可能是通知   在您的库代码之前发送   有史以来。

我使用 [NSThread isMultiThreaded] 而不是依赖 NSWillBecomeMultiThreadedNotification

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top