環形緩衝區的實現

2021-08-22 11:15:04 字數 1061 閱讀 9140

乙個簡單的環形緩衝區,沒有寫加解鎖的部分,用於多執行緒的話還是自己加吧.

#pragma

once

#include

"stdio.h

"#include

"stdlib.h

"#include

"memory.h

"namespace

linker

~ring(){}

bool

put(elementtype&e)

else

}bool

get(elementtype&e)

else

}unsigned

intinuse()

else

if(_first

>

_last)

else

}unsigned

intfreeelementnum()

unsigned

inttotalsize()

bool

isfull()

bool

isempty()

protected

:unsigned

int_size;

unsigned

int_fullsize;

elementtype_elements[size];

unsigned

int_first;

unsigned

int_last;

//lockname_lock;};

測試**:

#include

"ring.h

"#include

"stdio.h

"using

namespace

linker;

intmain()

printf(

"get1,put0-11,get1,put100,get*12timesinuse:%d

",clockring.inuse());}

說實話,這個類剛剛出爐沒有仔細測試,如果有bug -_-! 還請告訴我一下哈~

環形緩衝區

include include include include include define buffsize 1024 1024 define min x,y x y x y pthread mutex t lock pthread mutex initializer struct cycle b...

環形緩衝區

define print buf size 16 1024 static char g pcnetprintbuf 環形緩衝區的首位址 static int g ireadpos 0 環形緩衝區讀的位置 static int g iwritepos 0 環形緩衝區寫的位置 intinit 判斷環形緩...

環形緩衝區

環形緩衝區要維護兩個索引,分別對應寫入端 w 和讀取端 r 寫入 push 的時候,先確保環沒滿,然後把資料複製到 w 所對應的元素,最後 w 指向下乙個元素 讀取 pop 的時候,先確保環沒空,然後返回 r 對應的元素,最後 r 指向下乙個元素。上述的操作並不複雜,不過有乙個小小的麻煩 空環和滿環...