c++ - C++ 中的回调定时器函数

标签 c++ timer callback

我正在尝试在 C++ 中实现一个回调计时器函数,它应该在超时后进行回调。我正在监听套接字,然后等待其上的消息。所以如果我有类似 getMessages() 的东西并且我想将计时器函数作为参数传递给它。那么如何实现在接收到消息后,启动定时器,如果在下一条消息到达之前超时,则发生回调。

我是回调函数的新手。任何帮助是极大的赞赏。谢谢!

最佳答案

您可能知道,但 C++ 中没有回调函数之类的东西。但是,有函数指针

函数指针的字面意思是 - 指向函数的指针。使用“普通”指针,您可以指定指针指向的数据类型(例如 int *foochar *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/

相关文章:

c++ - 从普通数组创建 QList

c++ - 返回数组值时出现问题

Swift 定时器问题

javascript - JS setTimeout/setInterval 返回值是否被复用?

python - 从定时器中捕获异常

javascript - 尝试打印有警报的 URL 时如何解决并发问题?

JavaScript:如何在回调中影响外界?

co_await 表达式中的 c++ coroutines temporaries

c++ - 将输入值从 bash 脚本传递到 C++ 可执行文件

javascript - devexpress 回调结果语法