在C,Linux 3.2中:有没有办法以编程方式收集pthread某些程序上每个创建的线程的状态?例如,我想让每个线程花时间运行,并处于空闲状态.
clock_gettime()可以返回线程特定的CPU时间。只需执行以下操作:
struct timespec ts;
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
Run Code Online (Sandbox Code Playgroud)
但根据我的理解,这是该线程的用户时间和系统时间的总和。此外,您还应该考虑手册页末尾有关 SMP 系统的警告消息。
另外,如果您不需要当前线程上的计时信息,而是某些 pthread 上的计时信息,则可以通过usingclockid_t来使用。clock_gettime()int pthread_getcpuclockid(pthread_t thread, clockid_t *clock_id)