我正在学习iPhone上的套接字通信,它的指南说了CFRunloop
(它是CFNetwork
的指南,可以在iOS上使用吗?)
我在哪里可以了解iOS上的runloop?API参考是不够的。
答案 0 :(得分:37)
查看Apple的线程编程指南的"Run Loops" chapter。简而言之:
一个主要的缺陷是在等待来自runloop源的回调时忘记运行run循环。当您决定忙于等待主线程上发生的事情时,这有时会出现问题,但是当您创建自己的线程并使用该runloop注册runloop源时,您最有可能遇到此问题。您负责建立自动释放池并在非主线程上运行runloop(如果需要),因为应用程序主函数不会为您执行此操作。
你会更好地阅读Apple的Concurrency Programming Guide,这表明了runloop机制的替代方案,例如操作队列和调度源。 “迁移远离线程”一章的“替换运行循环代码”部分建议使用调度源而不是runloop源来处理事件。
答案 1 :(得分:5)
答案 2 :(得分:1)
NSRunLoop是Event-Driven-Mode
(android Handler-Looper-MessageQueue
和memcached
等)
我们使用
pipe()
生成两个fd(一个用于read
,另一个用于write
)。我们可以通过在其他线程中向read
fd写一些字节来唤醒线程(谁读取write
fd)。
这个项目(由我赞助)可以为您提供更多信息。
我相信这个项目可以帮助您清楚和充分地理解iOS / Mas Runloop,因此您可以正确有效地使用runloop来设计项目。
希望这可以帮到你。