gpt4 book ai didi

用于调试日志记录的循环缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:37 24 4
gpt4 key购买 nike

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

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

我正在考虑将其实现为单个链表,并在所有缓冲区都被使用时使用 muncher 收集缓冲区。

大家怎么看?非常感谢任何指示和建议。

0_l_0

最佳答案

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

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

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

零一0_l_0

关于用于调试日志记录的循环缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com