darwin: fix uv_hrtime() thread safety issue

This commit is contained in:
Ben Noordhuis 2012-11-07 16:10:55 +01:00
parent 0097280624
commit a7cedbe220

View File

@ -174,19 +174,12 @@ void uv__cf_loop_signal(uv_loop_t* loop, cf_loop_signal_cb cb, void* arg) {
uint64_t uv_hrtime(void) {
uint64_t time;
uint64_t enano;
static mach_timebase_info_data_t sTimebaseInfo;
mach_timebase_info_data_t info;
time = mach_absolute_time();
if (mach_timebase_info(&info) != KERN_SUCCESS)
abort();
if (0 == sTimebaseInfo.denom) {
(void)mach_timebase_info(&sTimebaseInfo);
}
enano = time * sTimebaseInfo.numer / sTimebaseInfo.denom;
return enano;
return mach_absolute_time() * info.numer / info.denom;
}