短篇故事
我需要将传入消息数据添加到固定长度的缓冲区。
如果缓冲区已满,则用新的替换最旧的消息数据(或缓冲区中最旧的字节)。这是某种队列。
如何实现这种队列?
程序是用 C 语言编写的,我对 C 语言知之甚少(更像是没有)。
很长的故事
我有一个从设备接收消息的程序。
此消息可能具有可变长度并具有关联的 Id。
目前,该程序仅保留每个 Id 收到的最新消息。
此消息由程序内部保存,仅在有配置或用户发送命令(实时)以获取给定 ID 的接收消息时才显示给用户。
现在需要保留给定 Id 的几条收到的消息(不仅仅是最后一条)并返回它们。它们不需要单独退回。它们可以在一个块中全部返回(将多个消息视为设备正在返回的一段内存数据)。
目前有一个固定长度的缓冲区来保存接收到的消息和一个变量来跟踪接收到的消息长度。
所以我正在考虑使用现有的缓冲区并继续向其中添加新消息。如果另一条消息出现并且缓冲区上没有更多空间,那么我应该覆盖最旧的消息数据。有点像排队。
尤其是实现这种队列的最后一部分是我需要更多帮助的地方。
该程序是用 C 编写的,不是我做的,而且我对 C 的了解有限(不是说不存在 :)
我真的应该先学习 C,但现在没有时间了 :) 我已经完成了 C#, Java、Javascript 等等。
对管理这个队列之王有什么帮助吗?
谢谢