我正在构建一个在MacBook Pro上打开UDP套接字的系统,每12 mS发送1024字节数据报,并在iPhone上接收所述数据报(我有一个iPhone 5)。套接字“发送”发生在macOS端的正确时间段,但iOS端的套接字“recvs”正在被内核偶尔延迟,有时甚至高达200 mS或更多!我没有丢失任何数据(因为我在内核检查一段时间后最终得到了一堆缓冲的数据报),但干预延迟是不可接受的。
这些是音频应用程序,所以我尝试在iOS端填充一些较大的接收缓冲区来解释这种内核行为。但延迟是累积的。无论我的接收缓冲区有多大,我的回放指针最终会赶上我的写指针,此时我会发出静音,直到我再次获得良好的数据(成功的套接字'recv')。当我用完数据时很容易听到,并且它发生了很多。
怎么办?
有没有办法提高套接字线程的优先级,以便内核不会长时间待午餐?
我是否可以使用其他任何实时“修复程序”来改进/避免此iOS内核行为?
感谢您的帮助!