2
저는 SQLite로 몇 가지 작업을하고 있습니다. 트랜잭션 중일 때 스레드를 차단하고 싶습니다. 아래 코드가 올바르게 작동합니까? 나는이 경우 트랜잭션이 열려있는 경우커스텀 트랜잭션 구현 - 스레딩 및 잠금
public class ThreadSafeSQLiteConnection
{
private readonly SQLiteConnection connection;
public static object TRANSACTION_LOCK = new Object();
public void BeginTransaction() {
Monitor.Enter(TRANSACTION_LOCK);
connection.BeginTransaction();
}
public void Commit() {
connection.Commit();
Monitor.Exit(TRANSACTION_LOCK);
}
public void Rollback() {
connection.Rollback();
Monitor.Exit(TRANSACTION_LOCK);
}
}
, 어떤 스레드는 BeginTransaction
방법 올바른을 입력 할 수 없습니다?
@ 그루 - SQL 라이트 전문가가 아니기 때문에 저를 용서해주십시오.) 그러나 동시 연결이 쓰려고 할 때 경합 조건을 보호하기 위해 SqlLite 트랜잭션을 거기서 보내지 않으십니까? – Polity
죄송합니다. 나는 이것을 생각하지 않았습니다. 예, SQLite는 쓰레드에 안전한 thread입니다. 그러나 나는 어떤 경우에도'TRANSACTION_LOCK'을 private으로 만들 것입니다. – Groo