嗯,已经是分离的架构,类似下面语句不断循环
if let Ok(size) = bufreader.read(&mut msg, MAX_READ_LENGTH).await {
mpsc_handle_tx.try_send(msg).unwrap();
}
只要收到msg,就发给其他线程处理,然后read.await下一帧
但实际上,两次await的间隔(前一个await完成 —— 当前await开始),有时就会超过4us(虽然不是很频繁,平均100次能发生1-3次),表现就是,下一帧会丢一些字节
但仅仅把await改成同步,则总体上能相对改善一些,虽然还是不能彻底解决。(解决需要改一下架构,同时各个环节全面优化,很琐碎)
【 在 NewMonk 的大作中提到: 】
: 将处理消息任务和接收消息暂存任务分开,是否能解决丢失消息的问题?
: 既然处理消息的时长不定,就只能先暂存消息了。
:
--
FROM 1.202.157.*