苹果线程指南表示:
对于多线程应用程序,Cocoa框架使用锁和其他形式的内部同步来确保它们的正确行为。然而,为了防止这些锁在单线程情况下降低性能,Cocoa直到应用程序使用NSThread类生成其第一个新线程才创建它们。如果您仅使用POSIX线程例程生成线程,则Cocoa不会收到它需要了解您的应用程序现在是多线程的通知。当发生这种情况时,涉及Cocoa框架的操作可能会破坏或崩溃应用程序。
要让Cocoa知道您打算使用多个线程,您所需做的就是使用NSThread类生成单个线程,然后立即退出该线程。您的线程入口点不需要执行任何操作。仅仅使用NSThread生成线程的行为就足以确保Cocoa框架需要的锁被放置。
在我的iOS应用程序中,我从C++代码开始几个pthread。为确保应用程序按照上述文档的要求运行正确,我创建了一个不做任何事情的虚拟NSThread。我不喜欢创建这样无用的代码(通常是“WTF”,当您首次阅读它时),我想避免这样做。有没有更好的方法将我的应用程序置于多线程模式?