我在Linux中运行C++程序。
有几个线程池(用于计算,I/O等)。
系统调用clock()可以让我测量所有CPU核心为该进程耗费的CPU时间。
然而,我想要测量仅由计算线程池中的线程耗费的CPU时间。
我应该如何实现?
谢谢:D
我在Linux中运行C++程序。
有几个线程池(用于计算,I/O等)。
系统调用clock()可以让我测量所有CPU核心为该进程耗费的CPU时间。
然而,我想要测量仅由计算线程池中的线程耗费的CPU时间。
我应该如何实现?
谢谢:D
要获得每个线程的CPU时钟ID
,您可以使用:pthread_getcpuclockid,
并且使用此CPU时钟ID
,您可以使用clock_gettime检索当前线程的CPU时间。
以下是演示相同操作的示例代码:
struct timespec currTime;
clockid_t threadClockId;
//! Get thread clock Id
pthread_getcpuclockid(pthread_self(), &threadClockId);
//! Using thread clock Id get the clock time
clock_gettime(threadClockId, &currTime);
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &currTime)
,因此您不需要pthread依赖。 - Alexander Pivovarov