如何在MacOSX中获得内核间的纳秒分辨率相对时间

如何在MacOSX中获得内核间的纳秒分辨率相对时间,c,multithreading,macos,C,Multithreading,Macos,我目前正在工作的一个项目中,我需要能够测量纳秒分辨率范围内的内核和线程之间的相对运行时间。通过谷歌搜索,我找到了以下代码片段: kern_return_t ret; clock_serv_t aClock; mach_timespec_t aTime; ret = host_get_clock_service(mach_host_self(), REALTIME_CLOCK, &aClock); if (ret != KERN_

我目前正在工作的一个项目中,我需要能够测量纳秒分辨率范围内的内核和线程之间的相对运行时间。通过谷歌搜索,我找到了以下代码片段:

kern_return_t ret;
clock_serv_t aClock;
mach_timespec_t aTime;

ret = host_get_clock_service(mach_host_self(), REALTIME_CLOCK,
                             &aClock);
if (ret != KERN_SUCCESS) {
    fprintf(stderr, "host_get_clock_service() failed: %s\n",
            mach_error_string(ret));
    abort();
}
ret = clock_get_time(aClock, &aTime);
if (ret != KERN_SUCCESS) {
    fprintf(stderr, "clock_get_time() failed: %s\n",
            mach_error_string(ret));
    abort();
}
使用这个函数clock\u get\u time实际上返回了一个结构,其中包含CPU通电后经过的秒数和纳秒数。但是,我不确定这个函数返回的值是否可以跨内核和线程安全使用

除了mach调用的一些手册页之外,我找不到关于这个的更多文档。有人试过这个吗?如果是的话,你能告诉我这方面的文档吗?我需要明确地知道计数器在内核和线程之间是一致的

我知道这个问题是硬件和操作系统特有的。我目前在Intel Core i7 2.5 ghz处理器上运行Mac OS X 10.9

感谢您的时间。

不是特定于Mac的,但至少会提供一组“松散”定义的步骤,或是核心之间协调可能需要哪些步骤的概念。