我正在尝试在 C++ 中实现一个回调计时器函数,它应该在超时后进行回调。我正在监听套接字,然后等待其上的消息。所以如果我有类似 getMessages() 的东西并且我想将计时器函数作为参数传递给它。那么如何实现在接收到消息后,启动定时器,如果在下一条消息到达之前超时,则发生回调。
我是回调函数的新手。任何帮助是极大的赞赏。谢谢!
最佳答案
您可能知道,但 C++ 中没有回调函数之类的东西。但是,有函数指针。
函数指针的字面意思是 - 指向函数的指针。使用“普通”指针,您可以指定指针指向的数据类型(例如 int *foo
、char *bar
...);函数指针的工作方式类似,您指定函数的签名:void (*baz)(int)
。请注意,在这种情况下,baz
是指针的名称。
如果没有代码,我不确定您的计时系统将如何工作。首先想到的是重复调用的滴答函数。您可以定期调用此函数或测量函数调用之间的时间 - 无论哪种情况,您都知道已经过去的时间。递增(或递减)分配的时间变量,当时间到时使用函数指针触发“回调”。
您可能会发现有用的一件事是像这样typedef
您的回调函数:
typedef void (*Callback)(int)
(同样,Callback
是标识符)。然后您可以像任何其他成员一样定义一个函数 (Callback func = foo
) 并调用它 (func(12)
)。
PS:在 SE 周围散布着很好的函数指针资源。 Here's one.
关于c++ - C++ 中的回调定时器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367464/