在
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
.