According to the SQLite FAQ:
Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time...
What happens when 2 processes are creating / inserting / updating / deleting / dropping temp tables at the same time? Do those actions also lock the database?
I'm using the .NET port System.Data.SQLite if that makes a difference.