2010-08-30 44 views
2

苹果Threading Programming Guide指出:为什么performSelector:onThread:withObject:waitUntilDone:不建议频繁的线程间通信

虽然好线程之间偶尔 沟通,你 不应使用 performSelector: onThread:withObject:waitUntilDone: 线程间时间关键或频繁线程间通信的方法。

问题:哪一个是频率间线程间通信的可接受方法,为什么是performSelector:onThread:withObject:waitUntilDone:特别不推荐。

ps:自然不会等到完成。

回答

3

他们不推荐使用的原因可能是因为这会带来很多开销。此外,它仅适用于运行NSRunloop的线程。尽管如此,从辅助线程更新UI确实很好。

对于更重的负载提升,您应该使用共享内存(使用锁或无锁算法)进行线程间通信。或者甚至更好地使用诸如NSOperationQueue或Grand Central Dispatch之类的东西,并且如果您的问题允许,则不必担心自己进行通信和同步。