在
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 举报,一经查实,本站将立刻删除。