为什么是performSelector:onThread:withObject:waitUntilDone:不推荐用于频繁的线程间通信

时间:2010-08-30 23:31:06

标签: multithreading macos communication

Apple的Threading Programming Guide声明:

  

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

这引出了一些问题:然后,这是频繁的线程间通信的可接受方法,以及为什么是performSelector:onThread:withObject:waitUntilDone:特别不推荐。

ps:自然不要等到完成。

1 个答案:

答案 0 :(得分:3)

他们不建议使用它的原因可能是因为这有很多开销。它也适用于运行NSRunloop的线程。这对于从辅助线程更新UI非常有用。

对于更重型的提升,您应该使用共享内存(带锁或无锁算法)进行线程间通信。或者甚至更好地使用像NSOperationQueue或Grand Central Dispatch这样的东西,如果您的问题允许,不要担心自己进行通信和同步。