c++ - boost asio stackless corotines - 基于开关的宏黑客如何工作?
问题描述
我指的是asio
单头无堆栈协程实现
代码基于宏hackery以实现类似状态机的流程,但我不完全了解它是如何工作的
例子
#define ASIO_CORO_REENTER(c) \
switch (::asio::detail::coroutine_ref _coro_value = c) \
case -1: if (_coro_value) \
{ \
goto terminate_coroutine; \
terminate_coroutine: \
_coro_value = -1; \
goto bail_out_of_coroutine; \
bail_out_of_coroutine: \
break; \
} \
else /* fall-through */ case 0:
- 为什么
case -1
一方面还要检查 的值_coro_value
?它不是必须等于 -1 吗?
解决方案
推荐阅读
- asp.net-core - 如何更改asp.net核心控制器中的静态文件位置?
- python-3.x - 尝试使用 PIL 从图像中提取元数据时出现 Unicode 解码错误
- python - 我不知道如何用 PCA9685 实现左转和右转
- php - 如何在 A1:AH1 下设置 phpspreadsheet 所有列的字体大小
- docker-compose - docker-compose 中的气流服务主机无法更改时区
- php - 从 JSON 文件中提取图像 (php)
- javascript - `let count = useRef(0).current` 的缺点是什么
- html - 将项目符号与换行文本对齐的 HTML 列表
- go - Go bytes buffer - 从底层预分配的字节切片/数组中读取
- histogram - Grafana Promql 直方图分位数查询问题