2011-08-16 103 views
4

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

谢谢。

回答

3

你可能会认为它是一个循环的二进制流。也就是说,如果添加一个元素,你将写入数据,而不是弹出它,你会阅读它。

+0

如何跟踪读取的大小?直接写入写索引? – ziu

+2

你可以写入缓冲区一个'struct {int size_payload; char * payload}',在读完第一个'int'后,您知道有效负载有多大(可变大小的项目) –