Re: [sqlite] sqlite3 and threads ...

2006-11-29 Thread Marten Feldtmann

[EMAIL PROTECTED] schrieb:

the 2.4 kernel.  If you are using win32 or mac os-x or linux
with a 2.6 kernel, this restriction does not apply.

  

Thats interesting ! Thanks !


Marten

-
To unsubscribe, send email to [EMAIL PROTECTED]
-



Re: [sqlite] sqlite3 and threads ...

2006-11-28 Thread drh
Marten Feldtmann <[EMAIL PROTECTED]> wrote:
> I've read the book from Michael Owens about SQLite and also
> read the parts about threads and sqlite3.
> 
> Actually it seems to be possible to use the same connection
> handler from different threads - but within a transaction
> only one thread is allowed to access the library with that
> particular connection handler.

This restriction is due to problems in the way pthreads and
posix advisory locks interact in some versions of Linux with
the 2.4 kernel.  If you are using win32 or mac os-x or linux
with a 2.6 kernel, this restriction does not apply.

> 
> Is this also true for functions like "errcode" and
> "errmsg" ?

I suspect these will work regardless.

Of course, nothing will work if you using the same connection
handle in two different threads at the same time.  You may want
to put a mutex on the connection handle so that you don't try
to use the same handle at the same time in two different threads.

You best bet, in my view, is to not use threads at all.
Here is a quote (slightly modified) from Bryan Oakley that I 
saw earlier today and kind of like:

   "You almost never need threading.  A good rule of thumb
is that you don't need threading unless you *know* you
need threading.  If you only *think* you need it, you 
don't need it.  And even if you *know* you need threading,
you may not."

--
D. Richard Hipp  <[EMAIL PROTECTED]>


-
To unsubscribe, send email to [EMAIL PROTECTED]
-



[sqlite] sqlite3 and threads ...

2006-11-28 Thread Marten Feldtmann

I've read the book from Michael Owens about SQLite and also
read the parts about threads and sqlite3.

Actually it seems to be possible to use the same connection
handler from different threads - but within a transaction
only one thread is allowed to access the library with that
particular connection handler.

Is this also true for functions like "errcode" and
"errmsg" ?

Background: I'm writing a wrapper for VASmalltalk and in that
tool it is possible to execute an external API call with a feature
named "staticFuture" call (an API call is always done with the
same native thread) - but this feature is time consuming.

After that costly API call I would like to call the fast API calls
"errcode" and "errmsg" in the virtual machine thread (which is
a different native thread than the thread mentioned above).

Is that possible ?

Marten

-
To unsubscribe, send email to [EMAIL PROTECTED]
-