C定时器回调

时间:2009-05-15 01:10:28

标签: c windows unix timer posix

感兴趣的是类似于UNIX和Windows上C中的JavaScript setTimeout。

基本上,我想:

start_timer(&function_pointer, int time_in_secs)

或尽可能接近我。

此外,类似于setInterval的东西会很好(每隔n秒调用一次回调),但这可以使用setTimeout实现:)

5 个答案:

答案 0 :(得分:8)

Win32中的

SetTimer,回复为TimerProc

/* calls TimerProc once every 60000 milliseconds */
SetTimer(NULL, 1, 60000, TimerProc);

答案 1 :(得分:5)

您可能想要尝试POSIX间隔计时器,timer_create和timer_settime,因为它允许您直接指定回调函数而不使用信号。要让计时器只过一次(而不是一直重复):

  

timer_settime:重装值   计时器应设置为该值   由it_interval成员指定   值。当计时器配备一个   非零it_interval,一个周期性的(或   指定了重复的计时器。

以下是使用这些计时器的大量文档,以及kernel.org上Linux程序员手册中的一个很好的例子:

timer_create - create a POSIX per-process timer

答案 2 :(得分:2)

对于UNIX,man setitimer

答案 3 :(得分:1)

可以找到有关alarm()和setitimer()的一些信息here。请注意,upcall函数是一个信号处理程序,因此它受到与信号处理程序相关的所有限制和限制的约束,详细描述了here

如第一个链接所述,alarm()是基于POSIX的,而setitimer()则不是(尽管它更灵活)。

答案 4 :(得分:-1)

试试glib。如果你需要可移植的代码,很可能你不能写任何比它们更便携的东西;)

http://library.gnome.org/devel/glib/2.20/glib-The-Main-Event-Loop.html#g-timeout-add