如何测量特定线程集的CPU时间?

syk*_*yko 8 c++ linux performance multithreading measure

我在Linux中运行C++程序.

有几个线程池(用于计算,用于io,用于......这样的事情).

系统调用clock()为我提供了一种方法来测量所有CPU内核为进程花费的CPU时间.

但是,我想测量仅由计算线程池中的线程花费的CPU时间.

我怎样才能实现它?

感谢:D

Hem*_*war 9

要获取CPU clock ID您可以使用的每个线程:pthread_getcpuclockid 并使用它,CPU clock 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);
Run Code Online (Sandbox Code Playgroud)