2016-04-14 40 views
3

我用来测量不同线程的时间消耗CLOCK_THREAD_CPUTIME_IDclock_gettime在C++世界中是否有任何线程特定的时钟?

但是clock_gettime是POSIX世界的一个标准,因此它在平台穿越时不能在Windows等其他平台上工作。

我检查了C++ STD,发现steady_clock,system_clcok,high_resolution_clock到现在为止,这些都不能为特定线程计时。

我错过任何东西吗?如果是,那么子弹是什么?或者,如果没有,任何建议?

+0

如果你能给出更详细的exp,那会更好。作为答案。 @JoachimPileborg – hxpax

+0

@JoachimPileborg尽管你可以在适当的地方发布它,而不是在评论部分。然后,可以像其他任何回答一样进行同行评审,这是通过更多类似“论坛”的网站创建SO模型的全部目的。 –

回答

1

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

此外,对于便携看看升压thread_clock

2

唯一的“时钟”来衡量的C++标准的CPU时间是std::clock,不衡量CPU时间在Windows,以便它仍然没有携带,无论如何它是每个进程而不是每个线程。

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

相关问题