c - 任何与 pthread_getcpuclockid 等效的函数,因为我有 Thread

标签 c linux multithreading performance pthreads

获取并行运行线程的性能统计信息-

要获取线程列表,我使用/proc/self/task 中的线程列表

现在我想获取线程的 CPU 时间时钟的 ID。但是 clock_getcpuclockid 只适用于 PID。

pthread_getcpuclockid 需要线程的 pthread id,我没有找到任何方法从线程的 TId 获取 pthread id,所以我正在寻找这个问题的任何替代解决方案。 CLOCK_THREAD_CPUTIME_ID 将仅返回当前信息,我需要所有并行线程的信息。欢迎提出任何建议。

有没有 pthread_getcpuclockid 的替代方案?我想知道内部的 pthread 实现是做什么的?

最佳答案

阅读time(7) & clock_gettime(2) .您可能想使用 CLOCK_THREAD_CPUTIME_ID

另见 proc(5)

Is there any alternative to pthread_getcpuclockid? I wonder what pthread implementation does inside ?

这很简单,并且特定于实现(可能在 GNU libcmusl-libc 之间变化)。大多数(AFAIK,全部)C standard libraries在 Linux 上是 free software ,这样您就可以研究他们的源代码。

对于 musl-libc src/threads/pthread_getcpuclockid.c正在从与 thread_t

相关的数据中获取时钟 ID

对于 GNU libc,我将深入了解其源代码留给您。

关于c - 任何与 pthread_getcpuclockid 等效的函数,因为我有 Thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32668240/

相关文章:

C语言基础

c++ - Visual Studio C/C++ 是否支持自动软件预取?

c++ - 什么会导致 _mm_setzero_si128() 变为 SIGSEGV?

multithreading - CopyFileEx 可以从辅助线程调用吗?

c - 编写一个函数,在 C 的一行中计算一个范围内的平方和

c - 在进程之间写入 malloced 内存

linux - 删除里面包含其他文件夹的文件夹

sql-server - 如何让 sqlcmd 在 linux 上拥有文件访问权限?

c - "SO_REUSEPORT"(OS X) 或 "SO_REUSEADDR"(Linux) 真的允许用户对多个套接字使用 recvfrom 吗?

c# - 如何获得第二个System.Thread.ThreadPool?