You can find a good description of how the locking process works in SQLite3 from this page, which describes the standard/default "delete" journal mode. Where the description says "process" think "connection" as the arbitration is between database connections -- you can have multiple connections in the same process or multiple processes with a connection each, for example, and there is really no difference. <https://sqlite.org/lockingv3.html> Locking in databases that are using Write-Ahead-Logging is a little bit different and is described here: <https://sqlite.org/wal.html>