请帮帮我朋友。我只想实现一个计时器事件功能。让我来正确描述一下。
在main函数中,将运行连续操作(假设在while(1)循环中打印)。
但是应该有另一个函数在一段时间间隔后重复调用(假设为2秒)。但是在主函数中执行的操作不应该受到阻碍。我想我必须在这里实现线程。
这就像是visual studio中的tick事件。
我想用C ++ gcc或g ++编译器。
答案 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