以编程方式获取线程 CPU 时间的方法,采用 C 语言,适用于 OpenSolaris 和 Linux
我有一个用 C 语言编写的小守护进程,我需要一种方法来获取线程上的当前 CPU 时间。 Linux 显然提供了多种方法来执行此操作,clock_gettime(CLOCK_THREAD_CPUTIME_ID, ...)、pthread_getcpuclockid()、getrusage(RUSAGE_THREAD, ...),但 OpenSolaris 2009.06 似乎不支持这些方法。
是否有跨平台友好的方法来获取线程的当前 CPU 时间?如果没有,有没有办法在 OpenSolaris 中做到这一点?在这一点上,我什至愿意放入一堆丑陋的编译器指令来完成这项工作。
I have a small daemon that I'm writing in C and I need a way to get the current CPU time on a thread. Linux apparently supplies a number of ways to go about doing this, clock_gettime(CLOCK_THREAD_CPUTIME_ID, ...), pthread_getcpuclockid(), getrusage(RUSAGE_THREAD, ...) but none of these seem to be supported under OpenSolaris 2009.06.
Is there a cross-platform friendly way to get the current CPU time for a thread? If not, is there any way to do it in OpenSolaris at all? At this point, I'm even willing to put in a bunch of ugly compiler directives to make this work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据 “Solaris 平台上的线程优先级” ,Solaris 9 及更高版本默认线程和 LWP 之间是一一对应的 (轻量级进程)。因此,根据 getrusage 的联机帮助页 ,您应该能够调用
getrusage(RUSAGE_LWP, ...)
。According to "Thread Priority on the Solaris Platform", Solaris 9 and above default to a one-to-one correspondence between threads and LWPs (Light-Weight Processes). Therefore, according to getrusage's manpage, you should be able to call
getrusage(RUSAGE_LWP, ...)
.