C ++,Linux中的计时器滴答事件

时间:2014-02-14 11:31:28

标签: c++ multithreading timer

请帮帮我朋友。我只想实现一个计时器事件功能。让我来正确描述一下。

在main函数中,将运行连续操作(假设在while(1)循环中打印)。

但是应该有另一个函数在一段时间间隔后重复调用(假设为2秒)。但是在主函数中执行的操作不应该受到阻碍。我想我必须在这里实现线程。

这就像是visual studio中的tick事件。

我想用C ++ gcc或g ++编译器。

1 个答案:

答案 0 :(得分:0)

您可以使用此代码自行跟踪时间:

首先,辅助功能

double GetSeconds()
{
    struct timeval Time;
    gettimeofday( &Time, NULL );
    int64_t T = Time.tv_usec + Time.tv_sec * 1000000;
    return static_cast<double>( T ) / 1000000.0;
}

使用它的主要代码,基本上是一个繁忙的循环:

const double EventTime = 2.0; // seconds

double StartTime = GetSeconds();

while (...)
{
   double T = GetSeconds();
   double DeltaTime = T-StartTime;

   if ( DeltaTime > EventTime )
   {
      FireEvent();
      StartTime = T;
   }
}

您可以在单独的线程中运行此循环,也可以将其与while (1)循环交错。选择是你的。

如果是线程,您可以参考本教程:Posix thread tutorial

相关问题