Ответ 1
В моем опыте (хотя, основываясь на несколько датированных версиях SQLite, то есть 3.0.x - 3.2.x), вы не хотите полагаться на реализацию блокировки по умолчанию SQLite, когда есть какая-то разногласия (даже если это просто несколько потоков в том же процессе).
Основная проблема заключается в том, что SQLite просто спит ненадолго, а затем пытается снова, если файл заблокирован (до истечения времени ожидания ожидания ожидания) - это, скорее всего, приведет к ошибкам "блокировки базы данных" в приложении. Обходной путь, который я реализовал, заключается в использовании моей собственной блокировки (с использованием мьютекса в многопоточном процессе) в дополнение к собственной блокировке SQLite.