1
iOS 시뮬레이터의 Nanosleep (MacOS Sierra에서 XCode 8.1 및 8.2beta로 실행)은 원하는 지속 시간보다 약 5 배 더 자게된다.MacOS에서 iOS 시뮬레이터에서 Nanosleep이 너무 길다. Sierra
실제 아이폰 7 기기 나 macOS Sierra 앱에서는 시뮬레이터에서만 발생합니다.
시뮬레이터에서 더 정확한 수면 지속 시간을 가질 수 있습니까, 아니면 버그입니까?
struct timespec request;
request.tv_sec = 0;
request.tv_nsec = 17000000; // 17ms
mach_timebase_info_data_t base;
mach_timebase_info(&base);
while (1) {
uint64_t start, end, elapsed;
start = mach_absolute_time();
nanosleep(&request, NULL);
end = mach_absolute_time();
elapsed = (end - start)/base.denom;
printf("Sleep = %f msec\n", elapsed * 1E-6);
}
출력 : 당신이 요청 된 기간 후 어느 시점에 예약 할 수 있습니다 ONY 보증 등을 콜
Sleep = 84.451425 msec Sleep = 69.947846 msec Sleep = 95.484521 msec Sleep = 72.795438 msec Sleep = 80.162972 msec Sleep = 70.265713 msec ...
Jeremy 및 @russbishop, 감사합니다. : D 나는 또한 우선 순위 문제를 예상했다! – Kris
@Kris Xcode 8.3 Beta를 확인하고 문제가 해결되었는지보고하십시오. 그렇지 않다면,'sudo taskinfo'의 출력으로 업데이트하십시오. –
Xcode 8.3 beta에서 수정되었습니다! 감사!! 실제로 우리는 Xcode 8.2 시뮬레이터에 대한 해결 방법을 사용했습니다.> 여러 개의 작은 잠자기 및 시간 확인이있는 루프. – Kris