2

我正在努力实现内存调试日志记录机制。要求如下

  • 用于存储调试消息的缓冲区是固定的,比如说 4KB
  • 写入缓冲区的调试消息的大小是任意的,可以是 10 字节或 2000 字节或更多
  • 一旦缓冲区已满,调试消息应轮换。
  • 调试消息必须按照插入缓冲区的顺序进行检索。

我正在考虑将其实现为一个带有 muncher 的单链表,以便在使用所有缓冲区时收集缓冲区。

你们有什么感想 ?任何指示和建议将不胜感激。

0_l_0

4

1 回答 1

3

感谢大家的回复。这是我已经完成的实现。

  • 插入到环中的每条消息都将以消息长度为前缀
  • 会有一个头尾指针,以及ring_size。
  • 对于要写入环形缓冲区的每条消息,我将执行以下检查

    • 新消息的环形缓冲区中是否有空间?
    • 消息是否需要移动头部以便为插入新消息腾出空间,如果是,则通过移动头部来切碎最旧的消息,直到我们有足够的空间容纳新消息。现在插入消息并更新尾部。
    • 我必须考虑的另一件事是从缓冲区读取/写入消息时的环绕。例如,当要插入的新消息超出环边界时,这是一个特殊的写操作,当我们到达缓冲区末尾时会进行回绕。本质上,带有环绕的消息读/写会导致两个读/写操作。一次写入/读取直到环结束,再一次读取/写入从缓冲区的开头。
  • 由于头部指向最旧的消息,并且我可以使用消息前缀的长度遍历环,因此排序不是问题。

零一0_l_0

于 2013-04-29T18:38:56.977 回答