相当于C的window.setTimeout()

前端之家收集整理的这篇文章主要介绍了相当于C的window.setTimeout()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
javascript中有这个甜蜜,甜蜜的函数window.setTimeout(func,1000);这会在1000毫秒后异步调用func.

我想在C中做类似的事情(没有多线程),所以我把一个样本循环放在一起,如:

    #include <stdio.h>

    struct Callback
    {
      // The _time_ this function will be executed.
      double execTime ;

      // The function to execute after execTime has passed
      void* func ;
    } ;

    // Sample function to execute
    void go()
    {
      puts( "GO" ) ;
    }

    // Global program-wide sense of time
    double time ;

    int main()
    {
      // start the timer
      time = 0 ;

      // Make a sample callback
      Callback c1 ;
      c1.execTime = 10000 ;
      c1.func = go ;

      while( 1 )
      {
        // its time to execute it
        if( time > c1.execTime )
        {
          c1.func ; // !! doesn't work!
        }

        time++;
      }
    }

我怎样才能做出类似这样的工作?

解决方法

使void(*)()类型的Callback :: func,即
struct Callback
{
    double execTime;
    void (*func)();
};

你可以这样调用函数

c1.func();

另外,不要忙碌等待.在Linux上使用ualarm或在Windows上使用CreateWaitableTimer.

猜你在找的C&C++相关文章