iOS/Macで提供しているタイマー精度のことはじめ
めも。iOSのNSTimerの精度の高さは、最初ビビったw @gnue: .@hkato193 さんの「iOS/Macで提供しているタイマー精度のことはじめ」をお気に入りにしました。 http://togetter.com/li/66009
2010-11-05 10:08:02@splhack そういえば、NSTimerとDispatch Sourceの2つは、ときおり「指定時間よりも僅かに前」という時間で発火していましたよ。離散透けジューリングのしきい値が垣間見えた一瞬でした。
2010-11-05 10:08:54によればxnu(OS X, iOSのMach由来kernel)は、soft realtimeなsystem。priority 127で相当にrealtime。userlandから使えないでしょうけども。default 31。79とか指定できるのかな? マウスカーソルに影響でそう。
2010-11-05 10:09:31@hkato193 それってCLOCK_MONOTONICとCLOCK_REALTIMEの違いではないでしょうか? MachのtimerとDispatch Source TIMERのkeventはREALTIMEで、mach_absolute_timeはMONOTONICとか。
2010-11-05 10:21:24@splhack その視点はなかったです。現在時刻を取得しようとするときに誤差が生じる、という理解で合ってます?
2010-11-05 10:24:06@splhack まさにそのサイトに載っていた経過時間の計算処理を使ってますです。 mach_absolute_difference()
2010-11-05 10:29:00@hkato193 確信はないですが、NSTimerとかで待ってる間にsystem time変更すると、NSTimerはそれに追従して起きるのか、それとも追従しないでsystem time変更しなかったとした時間まで寝てるのか。
2010-11-05 10:29:40@hkato193 仕様的には、そのthreadをsuspendしないといけないような気がしますので、busy loopは使わないんじゃないかなーと思ったりします。
2010-11-05 10:44:05@splhack Linux(というかglibcかuclibc)における実装で、あれーyieldしないんだけれど?ということがあってソース見たら愕然とした記憶が。記憶違いかもしれませんですが。確かに仕様ではSuspendですよね。
2010-11-05 10:46:02確かに。タイマーの「発火」も良い言葉がほしかったり。 RT @32nm: なんで日本語には、データ、に相当する語が無いんだろうか。
2010-11-05 10:48:32