Let's assume that for a given OS that fcntl() file locks work perfectly well on any thread. Would it then be safe from an SQLite perspective to finalize statements that were prepared in one thread in a different thread? (where the sqlite connection would only be used on one thread at a time).
--- [EMAIL PROTECTED] wrote: > It is possible to construct a case where finalizing a statement > from a different thread that the one where it was last stepped > would cause a problem. > > Remember, that the operating system bug that is causing all the > multithreading grief is that file locks created by one thread > cannot be reliably removed or modified by a different thread. > So if a statement acquires a lock on the database file in one > thread and you try to finalize the statement in a different > thread, the finalization would involve releasing the lock in > a different thread from which it was acquired - an operation > that silently fails on certain Linux kernels. > > On the other hand, if you sqlite3_reset() all statements in > the thread where they were last run, then all locks are released > by the reset. Then you are free to finialize the statements > from any thread you want. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com