Muti-Thread Application에서 SQLite를 사용하는 방안에 대해서 설명한다.
SQLite 다음과 같이 3가지 thread 모드를 지원하고 있다.
1) Single-thread
모든 mutexes가 disable 된다.
하나 이상의 thread에서 정상적으로 동작하지 않을 수 있다.
2) Multi-thread
multiple thread에서 사용 가능하다.
그러나, 하나의 database connection은 동시에 2개이상의 thread에서 사용하면 안된다.
3) Serialized
multiple thread에서 제한없이 안전하게 사용할 수 있다.
thread 모드를 설정하는 방식은 아래와 같이 3가지 방식이 있다.
1) Compile-time 설정하는 방식
SQLITE_THREADSAFE 매개변수에 설정하면 된다.
Single-thread: -DSQLITE_THREADSAFE=0 로 설정
Multi-thread: -DSQLITE_THREADSAFE=2 로 설정
Serialized: -DSQLITE_THREADSAFE=1 로 설정
2) Start-time에 설정하는 방식
sqlite3_config() 함수를 이용하여 설정할수 있다.
Single-thread: SQLITE_CONFIG_SINGLETHREAD 로 설정
Multi-thread: SQLITE_CONFIG_MULTITHITREAD 로 설정
Serialized: SQLITE_CONFIG_SERIALIZED 로 설정
3) Run-time에 설정하는 방식
sqlite3_open_v2() 함수를 이용하여 설정할 수 있다.
Single-thread: flag 사용하지 않거나, sqlite3_open() 또는 sqlite3_open16() 함수를 사용하여 open 한다.
Multi-thread: SQLITE_OPEN_NOMUTEX flag 사용
Serialized: SQLITE_OPEN_FULLMUTEX flag 사용
위 내용은 개인적으로 검토한 내용이므로 참고만 하시기 바랍니다.
감사합니다.
0 개의 댓글