以编程方式获取线程 CPU 时间的方法,采用 C 语言,适用于 OpenSolaris 和 Linux

发布于 2024-08-28 03:54:22 字数 301 浏览 14 评论 0原文

我有一个用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伤感在游骋 2024-09-04 03:54:22

根据 “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, ...).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文