从概念上讲,我运行以下 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
使用配置构建应用程序- 在调试器之外运行应用程序
奇怪的是,如果从调试器运行时发生这种情况 - 当我暂停并恢复应用程序时,它会再次正常运行一段时间。
有什么线索吗?