SQLite 데이터베이스에 여러 프로세스로 작성하고 싶습니다.여러 프로세스가있는 C++/SQLite - db 액세스
stringstream sstream << "BEGIN;" << query << "COMMIT;";
sqlite3_busy_timeout(databasePtr, 60000); // set timeout if sql busy
if((result = sqlite3_exec(databasePtr, (sstream.str()).c_str(), NULL, NULL, NULL)) != SQLITE_OK){
/** ERROR or SQLITE_BUSY **/
}
sqlite3_busy_timeout(databasePtr, 0); // reset sql_busy handler
내가 sqlite3_busy_timeout 성공에 이르게 생각 : 여기 내 C++ 코드입니다. 그러나 결과를 확인한 결과 데이터베이스에 모든 데이터가 기록되는 것은 아닙니다. 내 실수는 어디 갔지?
sqlite3_busy_timeout을 60000 (ms)으로 설정하면 sqlite3_exec가 호출되는 빈도를 아는 사람이 있습니까? 또는 SQLite_BUSY를 사용하여 첫 번째 시도가 반환되는 경우 60000 (ms) 후에 하나의 호출 만 있습니까?
다음 코드로 문제를 해결하려고했습니다. 그러나 항상 활성 프로세스가 하나만있는 것처럼 보입니다. 다른 프로세스까지 ..., (SRC/main.c에있는 sqliteDefaultBusyCallback()) sqlite3_busy_timeout 설치 바쁜 핸들러는 다음이 1ms 동안 휴면 및
do{
if((result = sqlite3_exec(databasePtr, (sstream.str()).c_str(), NULL, NULL, NULL)) != SQLITE_OK){
if(result == SQLITE_BUSY){
sleep(60000); // sleep 10 sec
}else{
/** ERROR **/
}
}
}while(result == SQLITE_BUSY);