環緩衝託管實現

2021-07-09 02:36:57 字數 1429 閱讀 4637

// 這個緩衝將被用作ring_buffer測試

class x_buffer

x_buffer_data, *x_buffer_data_ptr;

x_buffer_data_ptr _buffer_data;

public:

x_buffer()

:_buffer_data(nullptr)

{} x_buffer(size_t size)

char* base()

const char* base()

size_t capacity()

size_t rd()

char* rd_ptr()

void set_rd(size_t rd_)

size_t wd()

char* wd_ptr()

void set_wd(size_t wd_)

bool empty()

void set_empty(bool empty_)

};// ring託管類

templateclass ring_buffer

ring_buffer(const _buffer& buffer):_buffer(buffer){}

~ring_buffer(){}

void assign(_buffer&& buffer)

// 寫入內容

size_t write(const char* value, size_t len)

else

if (_buffer.wd() == _buffer.rd())

_buffer.set_empty(false);

return len;

} size_t write(const char* value)

// 讀取指定長度

size_t read(const char* value, size_t len)

else

if (_buffer.wd() == _buffer.rd())

_buffer.set_empty(true);

return len;

} // 讀取全部

size_t read(const char* value)

else

_buffer.set_rd(_buffer.wd());

_buffer.set_empty(true);

return len;

}};

解釋:期望實現乙個環形緩衝託管方法,可以託管任何buffer(主要用作共享記憶體,所以型別用了char)

除了託管上面的測試buff,還可以用在一些static_buffer上面。譬如:templateclass static_buffer。

規定了被託管物件一定要有的一些函式成員。

託管C 執行緒鎖實現

最近由於工作需要,開始寫託管c 由於c 11中的mutex,和future等類,託管c 不讓呼叫 報錯 所以自己實現了託管c 的執行緒鎖。該類可確保當乙個執行緒位於 的臨界區時,另乙個執行緒不會進入該臨界區。如果其他執行緒嘗試進入鎖定的 則它將一直等待 即被阻止 直到該物件被釋放。using nam...

如何實現雙緩衝 vc雙緩衝

cdc memdc 首先定義乙個顯示裝置物件 cbitmap membitmap 定義乙個位圖物件 隨後建立與螢幕顯示相容的記憶體顯示裝置 memdc.createcompatibledc null 這時還不能繪圖,因為沒有地方畫 下面建立乙個與螢幕顯示相容的點陣圖,至於點陣圖的大小嘛,可以用視窗的...

GDI 雙緩衝實現

gdi 使用雙緩衝繪圖 我再來詳細解釋一下剛才實現雙緩衝的具體步驟 1 在記憶體中建立一塊 虛擬畫布 bitmap bmp new bitmap 600,600 2 獲取這塊記憶體畫布的graphics引用 graphics g graphics.fromimage bmp 3 在這塊記憶體畫布上繪...