首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >macos纳米睡眠()睡眠时间太长

macos纳米睡眠()睡眠时间太长
EN

Stack Overflow用户
提问于 2018-01-16 16:14:13
回答 1查看 695关注 0票数 1

从概念上讲,我运行Swift伪代码来调节UDP发送的数据比特率

代码语言:javascript
复制
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.001s。一般来说,实际在nanosleep()上的花费要高出几个百分点。到目前为止还不错--但是过了一段时间,nanosleep()会在更长的时间后返回--很容易,它是秒,甚至是一分钟。我很确定我不会要求这么长的间隔。我试着跟着,但没有结果。

  • 使用release配置构建应用程序
  • 在调试器外运行应用程序

奇怪的是,如果这种情况是在调试器运行时发生的--当我暂停并继续应用程序时,它会再次正常运行一段时间。

有什么线索吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-16 16:36:59

啊,找到了这种行为的原因。macOS应用程序nap是造成这种情况的原因。

执行

代码语言:javascript
复制
serverActivity = ProcessInfo().beginActivity(options: ProcessInfo.ActivityOptions.userInitiated, reason: "Serving Fast Data")

在我开始为UDP服务之前,所有的数据都要及时和整洁地保持稳定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48285535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档