【发布时间】:2016-07-25 15:22:34
【问题描述】:
背景...
我正在修改 Apple 的 SimplePing 示例,以便为 iPhone 应用程序执行 ICMP ping。代码将本机套接字包装在指定读取回调的 CFSocket 对象中,然后将其添加为主线程上的运行循环源。当数据包被发送到套接字时,调用回调来计时往返、验证内容、更新 UI 等。
问题...
将此处理移至后台线程以使 ping 时间尽可能准确的最佳方法是什么?我需要测量调用套接字“sendto”方法和不间断地调用回调之间的精确时间。
任何示例或伪代码都会非常有帮助。我已经阅读了很多关于 Cocoa 中的线程的文章(NSThread 与 NSOperation、NSRunLoop 等),但到目前为止,我还不能完全拼凑起来。
谢谢
【问题讨论】:
-
根据this post 的说法,
CFSocket引擎盖线程方面已经发生了很多事情。可能对你有用。 -
澄清一下……想要进行后台处理的原因是原始代码(在主线程的 CFRunLoop 上运行)的 ping 时间比预期的要长。
-
@zoul:谢谢。我看过那个帖子,但我会再读一遍。
标签: iphone objective-c multithreading cocoa-touch sockets