在macOS Sierra上的任何iOS模拟器中,Nanosleep太长了

时间:2016-12-02 04:38:42

标签: ios c ios-simulator sleep macos-sierra

iOS模拟器中的Nanosleep(在带有XCode 8.1和8.2beta的MacOS Sierra上运行)的睡眠时间比所需的持续时间长5倍。

这不会发生在真正的iPhone 7设备或macOS Sierra应用程序中,只会出现在模拟器中。

是否可以在模拟器中拥有更准确的睡眠持续时间,还是一个错误?

var cy1 = cytoscape({
    container: document.getElementById('cy'),
    elements: {
        nodes: countriesJSON
    },
    style: [ 
    {
        selector: 'node',
        style: {
            'background-color': '#666',
            'label': 'data(id)'
        }
    },
    {
        selector: 'edge',
        style: {
            'width': 1,
            'line-color': '#aaa',
        }
    }
    ]
});

cy1.layout({
        name: 'circle'
});

输出:


    Sleep = 84.451425 msec  
    Sleep = 69.947846 msec  
    Sleep = 95.484521 msec  
    Sleep = 72.795438 msec  
    Sleep = 80.162972 msec  
    Sleep = 70.265713 msec  
    ...  

1 个答案:

答案 0 :(得分:1)

系统调用保证您将在请求的持续时间之后的某个时间点安排。你不应该在很快之后做出任何假设。

话虽如此,在Sierra上运行的Xcode 8.0-8.2存在一个问题,导致模拟器进程的调度优先级低于预期。这可能是您在设备和SIM卡之间看到这种行为差异的原因。