Mam aplikację, która używa SQLite (wersja 3.7.2) do przechowywania danych. Mam połączenie SQLite współużytkowane przez wiele wątków, które zapisuje i czyta z tego samego SQLite db. SQLite jest kompilowany przy użyciu DSQLITE_THREADSAFE = 1, co oznacza, że SQLite jest w trybie Serialized.SQLite: Udostępnianie połączeń między wątkami do odczytu i zapisu
Cytując SQLite docs
szeregowane: W trybie odcinkach, SQLite może być bezpiecznie stosowany przez wielu wątki bez ograniczeń.
Wręcz przeciwnie wpis SQLite Wiki mówi
Nie używaj tego samego połączenia z bazą danych w tym samym czasie w ponad jeden wątek
Próbowałem z przykładowej aplikacji tego ikra setki wątków i udostępniają uchwyt SQLite do odczytu, który działa poprawnie.
Czy wpis wiki SQLite jest nieaktualny, czy SQLite może nie być w stanie obsłużyć operacji odczytu i zapisu z różnych wątków w tym samym czasie przy użyciu tego samego połączenia?
Przeczytałem o tym, ale zastanawiałem się, czy wiki jest nieaktualne, czy też połączenie SQLite obsługuje teraz "reads" i "write" z tego samego połączenia z wielu wątków? – omggs
@omggs masz rację. Warunki są trochę mylące w dokumentach SQLite. Dla mnie * multi-thread * i * serialized * były takie same, ale nie są. Używam połączeń szeregowych, ale nie dzielę ich między wątkami ... a teraz dowiedziałem się, że można się bezpiecznie dzielić :) – devundef
Dzięki za potwierdzenie! Wiki SQLite jest rzeczywiście nieaktualne !!! – omggs