iphone - 如何在后台线程上运行CFSocket以获得更准确的ping时间?

标签 iphone objective-c multithreading cocoa-touch sockets

背景...

我正在修改Apple的SimplePing示例,以对iPhone应用程序执行ICMP ping操作。该代码将 native 套接字包装在指定读取回调的CFSocket对象中,然后将其作为主线程上的运行循环源添加。将数据包发送到套接字时,将调用回调以计时往返时间,验证内容,更新UI等。

问题...

将此处理移至后台线程以使ping时间尽可能准确的最佳方法是什么?我需要测量调用套接字“sendto”方法与回调调用之间的准确时间,而不会中断。

任何示例或伪代码都将非常有帮助。我已经阅读了很多关于Cocoa中的线程的文章(NSThread与NSOperation,NSRunLoop等),但是到目前为止,我还不能完全将它们拼凑在一起。

谢谢

最佳答案

您需要支持iOS 3.x吗?如果没有,您可以考虑使用Grand Central Dispatch。在这种情况下,您可以将套接字指定为调度队列的源,并为其赋予最高优先级。

关于iphone - 如何在后台线程上运行CFSocket以获得更准确的ping时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981620/

相关文章:

c# - 如何从 MVC 创建长时间运行的后台任务

java - Kotlin 有多平台锁吗?

iOS safari 崩溃(问题反复出现)

ios - 如何通过 Xcode 5.1.1 为 iOS 9 更新应用程序

iphone - 使用 imageWithData 从另一个 UIImage 创建 UIImage 返回 nil

objective-c - 访问命名管道以进行读写

objective-c - |NSArray objectEnumerator| 内存泄漏?

java - 将参数传递给在单独线程中调用的函数

iphone - iOS 中每个 View Controller 的静态 View

iphone - 以编程方式更改语言