【发布时间】:2011-08-16 22:47:25
【问题描述】:
我需要在 C 中编写一个共享缓冲区(1R 线程/1W 线程),以将二进制程序输出异步转储到 I/O。 在编写简单的共享缓冲区时,我通常使用经典的循环缓冲区实现,但在这种情况下,缓冲区上每个项目的大小是可变的,并且在编译时是未知的。 我想知道具有可变大小项目的循环缓冲区的可能实现是什么。
谢谢。
【问题讨论】:
标签: c circular-buffer
我需要在 C 中编写一个共享缓冲区(1R 线程/1W 线程),以将二进制程序输出异步转储到 I/O。 在编写简单的共享缓冲区时,我通常使用经典的循环缓冲区实现,但在这种情况下,缓冲区上每个项目的大小是可变的,并且在编译时是未知的。 我想知道具有可变大小项目的循环缓冲区的可能实现是什么。
谢谢。
【问题讨论】:
标签: c circular-buffer
你可以把它想象成一个循环的二进制流。也就是说,如果添加一个元素,您将写入数据,而不是弹出它,您将读取它。
【讨论】:
struct { int size_payload; char* payload}到缓冲区,先读完int你就知道payload是多少(可变大小的项)