Skip to content

Commit abed4f8

Browse files
committed
docs: 完善性能文档,增加详细测试环境、代码、各平台速率结果,补充系统调用分析与接口文档
- 更新 core-rw.md,详细说明 WritePort::Stream 批量写入接口 - 修正 timer.md API 文档格式 - 优化 perf.md,补充测试环境、代码、各档位速率
1 parent 0392e8d commit abed4f8

File tree

8 files changed

+283
-445
lines changed

8 files changed

+283
-445
lines changed

docs/basic_coding/core/core-rw.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ sidebar_position: 8
88

99
本模块定义了通用的 `ReadPort``WritePort` 接口类,用于跨平台封装异步、阻塞、轮询等多种 I/O 行为,并通过 `Operation` 模型绑定完成反馈机制。适配不同底层驱动时,只需实现对应的读写函数并赋值给端口对象,即可获得完整的异步 I/O 能力。
1010

11+
`ReadPort` `WritePort``WritePort::Stream`本身由原子操作与无锁数据结构实现,可以做到整个读写过程不进行任何系统调用,同时保证线程安全。下文的锁都只是逻辑抽象,不涉及到实际的互斥锁操作。
12+
1113
## 核心类型
1214

1315
### ReadPort / WritePort
@@ -144,4 +146,50 @@ uart.Read(buffer, op_cb);
144146

145147
---
146148

149+
## WritePort::Stream 批量写入接口
150+
151+
`WritePort::Stream` 提供了类似 C++ 标准流的链式批量写入能力,适合高吞吐、大包或连续多块数据写入场景。其优势在于 **一次性锁定端口资源、批量提交数据、降低队列压力和碎片化**,且用法简洁自然。
152+
153+
### 主要特性
154+
155+
- **流式链式写入**:支持多次 `<<` 操作,将多段数据批量拼接写入,提升吞吐效率。
156+
- **自动批量提交**:析构时会自动提交未提交的数据,也可随时调用 `Commit()` 手动提交。
157+
158+
### 示例用法
159+
160+
```cpp
161+
WriteOperation op;
162+
// 典型的流式批量写入
163+
{
164+
WritePort::Stream s(&uart_port, op);
165+
s << data1 << data2 << data3;
166+
// s.Commit(); // 可选,析构时自动提交
167+
}
168+
```
169+
170+
### 典型场景
171+
172+
- 串口/UART 批量输出
173+
- 网络通信分片、日志批量刷写
174+
- 多包数据一次性发送,极大减少写入等待和队列竞争
175+
176+
### 接口说明
177+
178+
```cpp
179+
class WritePort::Stream {
180+
public:
181+
Stream(WritePort* port, WriteOperation op); // 锁定端口并进入批量写模式
182+
~Stream(); // 析构自动提交并释放锁
183+
Stream& operator<<(const ConstRawData& data); // 追加一段数据
184+
ErrorCode Commit(); // 手动提交已追加的数据(可选)
185+
};
186+
```
187+
188+
- **Stream(WritePort*, WriteOperation)**:构造时尝试锁定,锁定失败则回退为普通写入模式。
189+
- **~Stream()**:析构自动提交所有数据、释放锁。
190+
- **operator<<**:链式添加要写入的数据。
191+
- **Commit()**:立即将当前追加的数据全部写入队列并(如需要)释放锁,可用于分段 flush。
192+
193+
---
194+
147195
`ReadPort` 与 `WritePort` 是 LibXR IO 抽象层的核心接口,提供统一的数据缓冲与完成反馈机制,适用于串口、网络、文件系统等多种数据流场景。

docs/basic_coding/system/timer.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ sidebar_position: 7
2626
| `static void Start(TimerHandle handle)` | 启动指定任务。 |
2727
| `static void Stop(TimerHandle handle)` | 停止指定任务。 |
2828
| `static void SetCycle(TimerHandle handle, uint32_t cycle)` | 修改任务周期。 |
29-
| `static void Remove(TimerHandle handle)` | 删除指定任务。 |
3029
| `static void Add(TimerHandle handle)` | 将任务添加到调度列表(首次添加会自动启动管理线程)。 |
3130
| `static void Refresh()` | 主动刷新所有任务(轮询场景下调用,通常由定时线程自动执行)。 |
3231
| `static void RefreshTimerInIdle()` | 在裸机下**由 Thread 延时/Mutex/信号量自动调用**,用户无需手动调用。 |

0 commit comments

Comments
 (0)