Boost.Asio - 如何在其他线程的上下文中使deadline_timer过期?
Boost.Asio - How to expire deadline_timer in other thread's context?
我正在创建一个任务调度程序,它调度一个处理程序在给定的持续时间并在计时器到期时执行它。在引擎盖下,它使用的是asio::d eadline_timer。根据 asio::io_service 的文档,处理程序将在运行 io_server::run() 函数的线程上下文中调用。虽然我的要求是在不同的线程上下文中调用处理程序。
我们如何才能实现它?确切地说,我的问题是,我们如何在不同的线程上下文中执行函数。例如,我在线程 1 中是当前的,但从线程 1 开始,我想从线程 2 上下文运行一些函数。
谢谢
一个常见的模式是
- 客户端线程请求计时器回调(绑定参数)并进入睡眠状态 计时器
- 过期,回调在计时器线程的上下文中执行
- 回调确实将命令发布到客户端队列中
- 客户端线程唤醒并执行命令
计时器线程与客户端实现(队列处理)完全分离。 客户端必须表现为合作,即不强调回调时间,而是立即返回。
相关文章:
- 是否需要在 Timer.5 boost::asio 教程中运行新线程?
- libevent是否允许在不同的线程中运行timer/io的回调
- QGraphicsView / Qgraphicsscene Timer事件不起作用
- 使用boost::asio::deadline_Timer实现通用Timer类时出现问题
- 创建 Timer 类时,我应该使用什么数据类型来保存值?(C/C++)
- C++ `Timer` class implementation
- 用c++编写Timer类
- Qt QLCDNumber Timer
- 在 c# 中是否有等效的 boost::timer::cpu_timer
- NachOS timer.cc 构造函数
- 在 c++ 中是否有像 timer 和 timertask 这样的东西,就像 java 一样
- c++计时器,相当于.NET System.Threading.timer
- 开始使用boost-cpu_timer时,错误:“boost::timer::cpu_timer”尚未声明
- 如何从boost::timer::cpu_timer获取以秒为单位的运行时间
- 如何为一些类(如timer类)编写单元测试
- 如何在c++中创建Timer任务
- Boost Timer 24小时格式
- 如何重启boost::timer::cpu_timer
- 在Timer ISR内使用FreeRTOS中的全局值
- Linux c++ timer周期性回调