GenTL学习——缓冲区状态流转

状态图
首先来看一下GenTL官方文档提供的缓冲区状态流转图:
下面简要概括以下图中节点对应的相关状态
状态 | 含义 |
Memory | 纯粹的系统内存空间,尚未分配给任何缓冲区管理 |
Allocated | 已分配的内存空间(分配操作由Consumer完成),但尚未注册到GenTL数据流模块 |
Announce | 已注册到数据流模块的缓冲区,可用于后续流程 |
Queued | 已放入输入缓冲池的缓冲区 |
Pending | 已放入输出缓冲队列的缓冲区,可供Consumer消费 |
Fill | 正在被采集引擎填充数据的缓冲区 |
个人理解
图中处于Announce状态的缓冲区集合不完全等价于GenTL中提到的Announced Buffer Pool中的缓冲区集合。Announced Buffer Pool中的缓冲区包含所有已声明的缓冲区,它们总是处于下述状态之一(下列名词未在GenTL中明确定义,是我自己方便记忆自定义的):
- Queued:处于输入缓冲池,
- Filling:从输入缓冲池取出,正在被采集引擎填充
- Pending:采集引擎填充完毕,放入输出缓冲队列
- Idle Announced:处于已声明缓冲池中,但不处于上述三种状态,为一种闲置状态
而上图中的Announce节点代表的是Announced Buffer Pool中未处于输入缓冲池,输出缓冲队列,填充状态的闲置已声明缓冲区的集合,即等价于Idle Announced状态。
- 标题: GenTL学习——缓冲区状态流转
- 作者: paw5zx
- 创建于 : 2025-04-27 16:01:19
- 更新于 : 2025-05-12 17:02:48
- 链接: https://paw5zx.github.io/GenTL-learning-01/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论