【问题标题】:Circular buffer implementation with variable-sized items具有可变大小项目的循环缓冲区实现
【发布时间】:2011-08-16 22:47:25
【问题描述】:

我需要在 C 中编写一个共享缓冲区(1R 线程/1W 线程),以将二进制程序输出异步转储到 I/O。 在编写简单的共享缓冲区时,我通常使用经典的循环缓冲区实现,但在这种情况下,缓冲区上每个项目的大小是可变的,并且在编译时是未知的。 我想知道具有可变大小项目的循环缓冲区的可能实现是什么。

谢谢。

【问题讨论】:

    标签: c circular-buffer


    【解决方案1】:

    你可以把它想象成一个循环的二进制流。也就是说,如果添加一个元素,您将写入数据,而不是弹出它,您将读取它。

    【讨论】:

    • 您将如何跟踪要阅读的大小?直接写在写索引里?
    • 你可以写一个struct { int size_payload; char* payload}到缓冲区,先读完int你就知道payload是多少(可变大小的项)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多