Pergunta

É possível ler de um db SQLite enquanto ele está sendo escrito para?

Estou ciente de que o acesso é bloqueado para gravações quando está sendo escrito, mas é que o mesmo para lê?

Foi útil?

Solução 2

Depois de algum lendo ao redor, e olhando através do código FMDB, eu descobri que eu não estava usando os valores de retorno SQLITE_BUSY e SQLITE_LOCKED corretamente.

De acordo com o código FMDB, deve-loop para um número limitado de tentativas, esperando por um curto bewteen tempo.

Então eu implementado que no meu código, e tudo parece funcionar bem.

Outras dicas

É um pouco complicado, mas confira o bloqueio de arquivos e Concorrência documentação para SQLite. Soa como se o db está em modo exclusive bloqueado, que é a única vez que lê não são permitidos. Além desbloqueado, quando o db não é ainda aberto.

Eu não estou 100% certo sobre isso, mas é isso que eu pensar isso significa.

Sim, apesar de todo o relevent multithreading questões precisam ser conta para. Eu geralmente abertos vários identificadores para o mesmo arquivo DB via sqlite3_open_v2 ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top