国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQLite > 正文

SQLite函數使用教程(2)

2024-09-07 00:09:59
字體:
來源:轉載
供稿:網友

SQLite的使用過程中最常發生的數據庫異常便是數據庫被鎖定了(SQLITE_BUSY或者SQLITE_LOCKED)。SQLite對于并發的處理機制是允許同一個進程的多個線程同時讀取一個數據庫,但是任何時刻只允許一個線程/進程寫入數據庫。所以必須要必須要對數據庫的讀寫進行控制。

SQLite數據庫本身提供了兩個函數用來處理鎖定情況:

int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);

int sqlite3_busy_timeout(sqlite3*, int ms);

使用這兩個函數可以設定當發生數據庫鎖定的時候,調用什么函數來處理,以及設定鎖定時的等待時間。

當然通常情況下我們還可以用另外一種方法來解決這類問題,那便是設置互斥量。一般情況下我們可以使用互斥量,臨界區等來實現。在這里我使用了互斥量,主要是因為我需要在多個不同的進程中并發的訪問同一個數據庫。用于鎖定和解鎖的函數如下:

void Lock()

{

if((hCounter = OpenMutex(MUTEX_ALL_ACCESS,FALSE,"kangxiaofang")) == NULL)

{

//如果沒有其他進程創建這個互斥量,則重新創建

hCounter = CreateMutex(NULL,FALSE,"kangxiaofang");

WaitForSingleObject(hCounter,INFINITE);

}

else

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陈巴尔虎旗| 莆田市| 定结县| 怀化市| 淮南市| 金溪县| 项城市| 万全县| 连江县| 博兴县| 阳朔县| 北碚区| 漳浦县| 迁西县| 泰宁县| 玛沁县| 铜陵市| 广东省| 福州市| 阿勒泰市| 广元市| 蚌埠市| 米脂县| 根河市| 普安县| 开鲁县| 泰来县| 宁波市| 莱芜市| 东丽区| 台东县| 扎鲁特旗| 建昌县| 阳原县| 弥渡县| 睢宁县| 应城市| 若尔盖县| 虞城县| 河南省| 社会|