国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香港| 浮梁县| 图片| 当涂县| 湟源县| 镇远县| 咸阳市| 涡阳县| 丹巴县| 泉州市| 胶南市| 汤阴县| 云梦县| 郓城县| 郎溪县| 张掖市| 萨迦县| 邵东县| 永定县| 石林| 富宁县| 太湖县| 勐海县| 寿阳县| 鹤山市| 康定县| 扶风县| 贡觉县| 巴青县| 宁南县| 五大连池市| 满城县| 颍上县| 沙河市| 温宿县| 鹰潭市| 麻江县| 左贡县| 巧家县| 和田市| 夏河县|