在C ++世界中是否有任何特定于线程的时钟?

时间:2016-04-14 12:50:12

标签: c++

我曾经用CLOCK_THREAD_CPUTIME_IDclock_gettime衡量不同主题的时间消耗。

但是clock_gettime是POSIX世界的标准,因此在平台交叉时它不会像Windows这样的其他平台。

我检查了C ++ STD,发现steady_clocksystem_clcokhigh_resolution_clock到目前为止,这些都不能为特定线程计时。

我有没有想念?如果有,那子弹是什么?或者,如果没有,任何建议?

2 个答案:

答案 0 :(得分:2)

唯一的"时钟"测量C ++标准中的CPU时间是std::clock,它不能测量Windows中的CPU时间,因此它仍然不可移植,无论如何它是每个进程而不是每个线程。

如果要测量线程CPU时间,则必须使用非便携式平台特定功能。

答案 1 :(得分:1)

您必须抽象出线程计时器的实现,在Windows下您可以使用GetThreadTimes函数。在linux(或非POSIX)下使用CLOCK_THREAD_CPUTIME_ID。但我想如果你在windows下使用mingw进行编译,那么CLOCK_THREAD_CPUTIME_ID将可用。

另外,为了便于携带,请查看提升thread_clock