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

2021-09-06 05:39:49 字數 914 閱讀 6896

在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,表示目前有執行緒正在做寫操作 其他執行緒來寫時,需要先檢測是否有程序正在做寫操作,如果有就需要等待,等待到某乙個配置的超時時間時,會丟擲異常終止等待 如果沒有則直...