微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

相当于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.

原文地址:https://www.jb51.cc/c/117135.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐