一些编程环境(例如 C++ builder)具有带有回调函数的计时器组件,该回调函数在与创建计时器对象的位置相同的执行上下文中执行。
我想知道如何在纯 c++ 中使用线程做类似的事情。或者有没有其他方法可以定期调用回调来执行某些任务并在与调用线程相同的执行上下文中运行?
一些编程环境(例如 C++ builder)具有带有回调函数的计时器组件,该回调函数在与创建计时器对象的位置相同的执行上下文中执行。
我想知道如何在纯 c++ 中使用线程做类似的事情。或者有没有其他方法可以定期调用回调来执行某些任务并在与调用线程相同的执行上下文中运行?
线程是否可以在其自己的上下文中处理计时器回调完全取决于计时器到期如何与线程通信。线程必须在接收到一些线程间通信时自己调用回调(例如,当 Windows GUI 线程等待其 Windows 消息队列输入时,它接收到 WM_TIMER 消息)。如果线程不等待输入,它不能处理来自任何类型定时器的任何线程间通信,因此不能在它自己的上下文中调用任何定时器处理程序回调。
Forms.Timer、C++ builder Timer 组件和其他类似的方法是安排基于间隔的线程间通知 - 如果线程没有主动等待和处理这些通知,则在该线程的上下文中不会有计时器回调.