2011-08-16 70 views
4

我需要在C中編寫共享緩衝區(1R線程/ 1W線程)以異步地將二進制程序輸出轉儲到I/O。 在編寫簡單的共享緩衝區時,我通常使用經典的循環緩衝區實現,但在這種情況下,緩衝區上每個項目的大小是可變的,並且在編譯時不知道。 我想知道什麼是一個可變的大小項目的循環緩衝區的實現。具有可變大小項目的循環緩衝區實現

謝謝。

回答

3

你可能會認爲它是一個循環的二進制流。也就是說,如果添加一個元素,你將寫入數據,而不是彈出它,你會閱讀它。

+0

如何跟蹤讀取的大小?直接寫入寫索引? – ziu

+2

你可以寫入緩衝區一個'struct {int size_payload; char * payload}',在讀完第一個'int'後,您知道有效負載有多大(可變大小的項目) –