SQLite.Net потокобезопасен? - PullRequest
6 голосов
/ 20 мая 2009

Я спрашиваю о реализации .Net - System.Data.SQLite. Есть ли рекомендации по его использованию в поточно-ориентированном режиме?

Я знаю, что сам SQLite можно скомпилировать с безопасностью потока или без него - но как был скомпилирован System.Data.SQLite?

1 Ответ

8 голосов
/ 20 мая 2009

Он не является поточно-ориентированным, поэтому вы не можете совместно использовать объекты подключения или аналогичные потоки.

Исправления потоков, упомянутые в файле readme, имеют отношение к нескольким потокам, использующим несколько подключений (т. Е. По одному для каждого) к одному и тому же файлу, и какие проблемы или условия гонки могут возникнуть.

Например, условие состязания потоков, упомянутое для BEGIN и BEGIN IMMEDIATE, имело неудачный эффект: даже если поток выдал BEGIN, другой поток, который впоследствии выдал BEGIN, все равно может оказаться владельцем базы данных до первого. Эти типы ситуаций были исправлены.

Но соединения с базами данных (oracle, sqlite, ms sql server) в .NET не являются поточно-ориентированными, как и окружающие объекты.

...