leveldb原始碼學習 系統函式封裝Env

2021-08-08 23:12:45 字數 770 閱讀 5110

env是乙個介面類,提供了基本的系統訪問介面,如操作檔案,執行緒等。

leveldb在util中實現了posixenv,實現上述介面

首先定義了幾個基本型別

sequentialfile,提供順序讀方法的介面類

randomaccessfile,提供隨機讀方法的介面類

writablefile, 提供順序寫方法的介面類

env介面類定義了以下介面

建立檔案控制代碼寫檔案

建立/刪除資料夾

檔案lock/unlock

posix 的實現

posix實現了env的含義分兩個方面:1,實現了posix版本的randomaccessfile,sequentialfile等,2,實現了posixenv類,繼承env

另外,env定義了在後台執行執行緒執行後台任務的介面

posixenv::schedule(void (function)(void), void* arg)

這個函式會將function和arg包裝成為乙個bgitem,放到乙個佇列中,在這之前啟動(如果已經存在,就不啟動)乙個後台程序,是任務的消費者,死迴圈的來消費此佇列中的任務。

當使用pthread_create來建立乙個執行緒,並使用物件方法來作為入口函式時,沒有辦法傳遞this指標,所以應該定義乙個static function,接收this指標,然後執行對應的成員方法

class posixenv 

void bgthread()

}}

leveldb 原始碼導讀

1,slice.h中slice是leveldb內部使用的字串類,很簡單 2,leveldb 儲存編碼 對於位元組儲存分大端小端位元組序還是小端小端位元組序 leveldb使用的是小端位元組序儲存,低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。編碼分為變長的varint和固定大小...

leveldb原始碼分析1

leveldb是乙個key value型的儲存引擎,由google開發,並宣布在bsd許可下開放源 plain git clone plain cd leveldb make all 此時生成libleveldb.a庫檔案。拷貝leveldb的標頭檔案到 usr include下 plain cp ...

levelDB原始碼分析 SSTable

sstable是bigtable中至關重要的一塊,對於leveldb來說也是如此,對leveldb的sstable實現細節的了解也有助於了解bigtable中一些實現細節。本節內容主要講述sstable的靜態布局結構,sstable檔案形成了不同level的層級結構,至於這個層級結構是如何形成的我們...