Потоки SQLite: mutex не создаёт прикладную транзакцию из нескольких вызовов
Фотография конкретного исполнения не приложена.
SQLite поддерживает single-thread, multi-thread и serialized режимы. В multi-thread разные потоки могут работать с библиотекой, но один connection и производные объекты нельзя одновременно использовать из нескольких потоков. Serialized добавляет сериализацию обращений к объектам. Название режима не следует понимать как разрешение любого прикладного перемешивания операций.
Даже безопасные отдельные API-вызовы не объединяют последовательность «прочитать условие — изменить запись» в одну бизнес-операцию. Владение connection, prepared statement и границей транзакции определяют явно. Иначе два модуля могут получить допустимые по API результаты, но нарушить логику распределения пакетов между обработчиками.
Sqlite3_threadsafe сообщает compile-time настройку, не отражая всех последующих изменений режима. Подтверждение эффективной среды требует учёта инициализации и флагов создания connection. Если single-thread выбран при сборке, отсутствующую логику mutex нельзя просто вернуть настройкой отдельного connection во время работы.
В приёмке проверяют реальные пути совместного доступа к connection и согласованный конкурентный сценарий приложения. Нужны сборка, эффективные параметры и наблюдаемый результат транзакций. Отсутствие аварий процесса при коротком тесте не доказывает корректное владение объектами или атомарность многошаговой обработки телеметрии.
Основание — SQLite official unversioned documentation snapshot; Download index observed 3.54.1, individual pages not version-tagged, разделы Compile-time, start-time and connection modes. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Установленная библиотека, сборка, файловая система и база узла не проверялись. Это проектный сценарий; SQL и сервисные операции на реальных данных не выполнялись.