SQLite多執行緒寫鎖檔案解決方案

2021-05-27 09:44:48 字數 1016 閱讀 1005

在sqlite程式設計中多執行緒同時寫時會出現異常,我寫了個類來解決這個問題。

思路很簡單,就是在開始寫操作時,記下寫操作的託管執行緒id,表示目前有執行緒正在做寫操作;其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待;如果沒有則直接放行,此執行緒可以獲得寫鎖。最後寫操作執行完畢時需要釋放鎖。

下面是具體的**:

//////

用於在多執行緒訪問sqlite時防止同步寫導致鎖檔案

//////

使用方法:

///using (sqlitewritelock sqlitelock = new sqlitewritelock(sqlite鏈結字串))

//////

//////

預設的超時時間是1000ms

///public

sealed

class

sqlitewritelock : idisposable

return

1000;}

}#endregion

private

readonly

string

_connstring;

//隱藏無參建構函式

private

sqlitewritelock() 

public

sqlitewritelock(

string

connstring)

#region

私有方法

private

void

acquirewritelock()

}lock

(locker)

}private

void

releasewritelock()}}

#endregion

#region

idisposable 成員

public

void

dispose()

#endregion }

SQLite多執行緒寫鎖檔案解決方案

在sqlite程式設計中多執行緒同時寫時會出現異常,我寫了個類來解決這個問題。思路很簡單,就是在開始寫操作時,記下寫操作的託管執行緒id,表示目前有執行緒正在做寫操作 其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待 如果沒有則直...

SQLite多執行緒寫鎖檔案解決方案

在sqlite程式設計中多執行緒同時寫時會出現異常,我寫了個類來解決這個問題。思路很簡單,就是在開始寫操作時,記下寫操作的託管執行緒id,表示目前有執行緒正在做寫操作 其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待 如果沒有則直...

SQLite多執行緒寫鎖檔案解決方案

在sqlite程式設計中多執行緒同時寫時會出現異常,我寫了個類來解決這個問題。思路很簡單,就是在開始寫操作時,記下寫操作的託管執行緒id,表示目前有執行緒正在做寫操作 其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待 如果沒有則直...