On Mar 22 18:47, Christian Franke wrote:
Corinna Vinschen wrote:
clock_getres already returns the coarsest time. Did you mean the
setting in hires_ms::resolution, by any chance? It's using the
actual setting right now.
No. Yes.
No, clock_getres(CLOCK_REALTIME, .) returns gtod.resolution() which
calls hires_ms::resolution().
Yes, I mean this function which returns the 'actual' value from
NtQueryTimerResolution(:-).
If clock_setres() is used, this setting should be returned instead
of the 'actual' value at the time of the setting.
Well, I'm not overly concerned about clock_setres, given that it's
probably not used at all :)
Yes, it is not POSIX and does not exist on Linux, FreeBSD, ...
It IMO is useful as CLOCK_REALTIME does only provide a rather coarse
default resolution on Cygwin.
I see your point, but what bugs me a bit is the fact that
clock_getres(CLOCK_REALTIME) and clock_setres(CLOCK_REALTIME) will
always return the same value coarsest, regardless what value has been set.
I added this comment to clock_setres at one point:
/* Convert to 100ns to match OS resolution. The OS uses ULONG values
to express resolution in 100ns units, so the coarsest timer resolution
is< 430 secs. Actually the coarsest timer resolution is only slightly
beyond 15ms, but this might change in future OS versions, so we play nice
here. */
So, what if the OS really returns bigger values in coarsest at one
point? I know, I know, that's unlikely to the point of non-existence.
- Unlike on e.g. Linux, CLOCK_REALTIME does not provide a better
resolution than gettimeofday().
We can only use what the OS provides. Starting with Windows 8 there
will be a new function call GetSystemTimePreciseAsFileTime:
http://msdn.microsoft.com/en-us/library/windows/desktop/hh706895%28v=vs.85%29.aspx