I run C++ program in Linux.
There are several threads pool (for computation, for io, for … such things).
The system call clock() gives me a way to measure the CPU time spent by all the CPU cores for the process.
However, I want to measure the CPU time spent only by the threads in the computation threads pool.
How can I achieve it?
Thanks 😀
Advertisement
Answer
To get CPU clock ID
of every thread you can use: pthread_getcpuclockid
and using this CPU clock ID
you can retrieve the current thread CPU time using: clock_gettime.
Following is the sample code to demonstrate the same:
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);