【问题标题】:how to stop timer after a given millisecond in c如何在c中给定毫秒后停止计时器
【发布时间】:2014-02-26 07:01:42
【问题描述】:
 #include <stdio.h>
#include <time.h>   
int main (void)
{
double diff = 0.0;
time_t start;
time_t stop;
time(&start);
print("Enter millisecond to stop"); 

那么在给定的计时器间隔后应该添加什么代码来停止计时器

【问题讨论】:

  • time 以秒为单位返回使用gettimeofday。您无法使用time 达到毫秒精度。男人2次
  • 如果不指定给定系统,您的问题将毫无意义。如果您在标准桌面操作系统(Windows、Linux、Mac 等)上编程,那么就没有毫秒精度之类的东西,因为您需要一个 RTOS。即使预期目标是 RTOS,您也可能不使用 time,因为它旨在提供日历时间,而不是高分辨率时间。
  • 我会把time(&amp;start); 放在用户输入间隔之后。并且:time() 返回秒数。所以试图用它来测量毫秒是没有意义的。
  • 您可能想在 SO 上环顾四周,有几十个像您这样的问题。
  • 还要决定:C 还是 C++?

标签: c++ c timer milliseconds


【解决方案1】:
int seconds;
scanf ("%d",&seconds);
stop = 0;
while (stop < start + seconds)
    time(&stop);

【讨论】:

  • 您的循环是一个繁忙的循环。它将以 100% 的速度消耗您的一个 CPU 内核。尝试使用睡眠(可能是 nanosleep)来“暂停”您的进程。
  • @jackrabbit 睡眠功能不能用于精确的毫秒计时目的,read this
  • 你指的是 10 年前关于使用休眠进行线程同步的页面有缺陷?在上面的代码中看不到线程。我只是说,为了等待大量时间,您可能不想编写繁忙循环。
猜你喜欢
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
相关资源
最近更新 更多