为什么要引入 TLM 2.0?
TLM 1.0 的 put() / get() 都是阻塞操作——生产者调用 put() 后会被挂起,直到消费者完成接收;消费者调用 get() 后也会阻塞,直到有数据到来。这在很多场景下工作良好,但现实验证环境往往更复杂:
- 速率不匹配:生产者生成事务的速度远快于消费者处理的速度;
- 需要轮询:某些场景下不想被阻塞,想“看一眼”能不能发/收,不行就去干别的事;
- 需要预览:想看看队列里下一个事务是什么,但不把它取出来。
TLM 1.0 解决不了这些问题。于是 TLM 2.0 来了——它在 TLM 1.0 的基础上扩展了非阻塞接口、peek 操作和 FIFO 缓冲通道。
TLM 2.0 的三大核心增强:双向的阻塞/非阻塞接口、时间标记、统一的数据包。
核心概念
2.1 非阻塞操作:try_put / can_put
TLM 2.0 为 put、get、peek 各增加了非阻塞版本:
| 操作 | 阻塞版本(task) | 非阻塞版本(function) | 用途 |
|---|---|---|---|
| put |

5329

被折叠的 条评论
为什么被折叠?



