【问题标题】:Linux high resolution timer in multithreaded environment?多线程环境中的Linux高分辨率计时器?
【发布时间】:2013-11-25 08:43:55
【问题描述】:

似乎 Linux 高分辨率计时器开始在每个线程的范围内计数 - 而不是在应用程序中全局计数。

我尝试使用 CLOCK_PROCESS_CPUTIME_ID 但它给了我线程行为?

   CLOCK_PROCESS_CPUTIME_ID (since Linux 2.6.12)
          High-resolution per-process timer from the CPU.

   CLOCK_THREAD_CPUTIME_ID (since Linux 2.6.12)
          Thread-specific CPU-time clock.

寻找跨线程的高分辨率计时器。
(全局计时器以毫秒为单位,而高分辨率以纳秒为单位。)

如何在多线程环境中获得高分辨率时间?

【问题讨论】:

  • 需要人工时间还是计算时间。人工时间以秒为单位,计算时间以指令为单位?
  • @mikhail:尽可能计算时间,寻找纳/微秒
  • 您所说的在威胁范围内开始是什么意思?你试过什么了?根据clock_gettime(2) 的说法,Linux 提供了一个来自 CPU 的高分辨率每进程计时器。
  • @oswald:看来返回的时间是相对于线程开始的时间。
  • @oswald:尝试了 CLOCK_PROCESS_CPUTIME_ID,给了我线程行为...

标签: c++ c linux multithreading timer


【解决方案1】:

请尝试getTimeofday,它应该在microseconds 的分辨率下留出时间(参考:Linux Man Page

您可能还想参考这个问题:How to create a high resolution timer in Linux to measure program performance?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多