从概念上讲,我运行以下Swift伪代码来调节UDP发送的数据比特率
let sendQueue = DispatchQueue(label: "_send_queue", qos: .userInitiated)
sendQueue.async {
for data in datas {
socket.send(data)
if let timespec = getTimeToSleep() {
var ts = timespec
nanosleep(&ts, nil)
}
}
}
在我的情况下,睡眠时间通常约为0.001秒。一般来说,nanosleep()
的实际支出高出几个百分点。到目前为止一直很好 - 但是经过一段时间nanosleep()
在很长一段时间后返回 - 很容易就是几秒甚至一分钟。我很确定我没有要求这么长的间隔。我试过没有结果
release
config 如果从调试器运行时发生这种情况有什么奇怪的 - 当我暂停并恢复应用程序时,它会再运行一段时间。
任何线索?
答案 0 :(得分:0)
执行
serverActivity = ProcessInfo().beginActivity(options: ProcessInfo.ActivityOptions.userInitiated, reason: "Serving Fast Data")
在我开始提供UDP数据之前,所有这些都能够及时稳定地完成。