GKD.RoboCtrl
RoboMaster Linux 电控:异步 IO、设备驱动与机器人控制
载入中...
搜索中...
未找到
async.hpp 文件参考

异步任务上下文组件。 更多...

详细描述

异步任务上下文组件。

作者
Junity

提供基于Asio的异步任务执行环境,支持协程任务的调度和执行。

版本
0.1
日期
2025-11-09

在文件 async.hpp 中定义.

#include <chrono>
#include <exception>
#include <format>
#include <functional>
#include <string_view>
#include <tuple>
#include <utility>
#include <asio.hpp>
#include <asio/awaitable.hpp>
#include <asio/io_context.hpp>
#include <asio/steady_timer.hpp>
#include <asio/use_awaitable.hpp>
#include "multiton.hpp"
#include "core/logger.h"
#include "utils/singleton.hpp"
async.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

类

class  roboctrl::async::task_context
 异步任务上下文类。 更多...
 
struct  roboctrl::async::task_context::info_type
 

命名空间

namespace  roboctrl::async
 异步上下文相关功能
 

类型定义

template<typename T = void>
using roboctrl::async::awaitable = asio::awaitable< T >
 协程任务类型。
 
using roboctrl::async::duration = std::chrono::steady_clock::duration
 

函数

auto roboctrl::async::spawn (task_context::task_type &&task)
 添加一个协程任务到全局任务上下文中执行。
 
template<typename ... Args>
auto roboctrl::async::post (Args &&... args)
 添加一个任务到全局任务上下文中执行。
 
void roboctrl::async::run ()
 运行全局任务上下文。
 
bool roboctrl::async::failed ()
 查询全局任务上下文是否因未处理异常进入过安全停机。
 
bool roboctrl::async::shutdown_requested ()
 查询全局任务上下文是否已经进入停机流程。
 
void roboctrl::async::set_shutdown_handler (task_context::shutdown_handler_type handler)
 设置全局任务上下文的一次性安全停机任务。
 
void roboctrl::async::request_shutdown ()
 请求运行全局任务上下文的安全停机任务。
 
awaitable< void > roboctrl::async::yield ()
 协程任务等待。用于让出当前函数的执行权。
 
awaitable< void > roboctrl::async::wait_for (const duration &duration)
 协程任务等待。
 
auto roboctrl::async::executor ()
 获取全局任务上下文的executor。
 
auto & roboctrl::async::io_context ()
 获取全局任务上下文的io_context。
 
void roboctrl::async::stop ()