Nanosleep im iOS-Simulator (läuft auf MacOS Sierra mit XCode 8.1 und 8.2beta) schlafen etwa 5 mal länger als die gewünschte Dauer.Nanosleep zu lang in jedem iOS-Simulator auf MacOS Sierra
Dies passiert nicht auf dem echten iPhone 7 oder in einer macOS Sierra App, nur im Simulator.
Ist es möglich, eine genauere Schlafdauer im Simulator zu haben oder ist es ein Fehler?
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);
}
Ausgang:
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 und @rußbischof, Danke! : D Ich habe auch ein Prioritätsproblem erwartet! – Kris
@Kris Bitte überprüfen Sie Xcode 8.3 Beta und melden Sie sich zurück, wenn das Ihr Problem angeht. Wenn nicht, bitte aktualisieren Sie mit der Ausgabe von 'sudo taskinfo' –
in Xcode 8.3 Beta behoben! Vielen Dank!! Tatsächlich haben wir einen Workaround für den Xcode 8.2 Simulator verwendet -> eine Schleife mit mehreren kleinen Schlaf- und Zeitprüfungen. – Kris