An important thing (which you would consider to be reasonable) is that
no multiple threads access the very same connection object. This causes
at least problems with MySQL, but I would expect also with other
database engines. It may be worth adding that to a piece of doc.

Rainer

> -----Original Message-----
> From: Markus Hoenicka [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, November 25, 2008 11:57 AM
> To: [EMAIL PROTECTED]
> Cc: [email protected]
> Subject: Re: [libdbi-devel] Thread Safety question
> 
> Quoting Artyom <[EMAIL PROTECTED]>:
> 
> > I'm mostly interested in accessing different dbi_conn objects
> > from same thread in safe way.
> >
> > So, it is quite reasonable to call dbi_initialize from single thread
> > and call dbi_shutdown from single thread.
> >
> 
> This is perfectly reasonable. However, if we advertise libdbi as
> thread-safe, we must also accommodate programmers who use one instance
> per thread, for whatever reason.
> 
> > gmtime_r, readdir_r exists on both Linux and Cygwin platforms and
> > according to man mages exists in FreeBSD as well:
> >
> 
> Yes, I've mentioned those as I do have access to them and positively
> know they support the reentrant versions. I'm more concerned about the
> systems that I don't run myself, like OSX, the other *BSDs, Solaris
> and so on.
> 
> > However readdir_r is less important because it is quite reasonable
> > to load shared objects from single thread.
> >
> 
> Once again, it is reasonable, but we must not rely on users doing only
> things that we assume as reasonable.
> 
> > Also, I had seen that gmtime used from timegm only if it
> > is not implemented. (Undef cygwin/Linux it is implemented
> > as GNU extension). Thus, gmttime shoudn't be called.
> >
> 
> It is called whenever a platform does not implement timegm. We've had
> at least one such platform, otherwise there wouldn't be a workaround.
> 
> There is another function in dbi_result.c which uses gmtime:
> dbi_result_get_as_string_copy_idx(). This needs to be fixed too.
> 
> 
> > Is there other points where non reenterable functions are used?
> 
> To the best of my knowledge, not in libdbi.
> 
> >
> > I started to use the library for CppCMS project that naively
> > runs in multiple threads. I assumed that the library is thread
> > safe, however if I'm wrong it may be quite problematic for me.
> >
> 
> This is a good excuse to make libdbi thread-safe :-)
> 
> > It would be great, at least it is possible to know what
> > backends are not safe.
> >
> > For the record I had seen in sqlite (not sqlite3) backend
> > usage of strtok. So it should be thread unsafe.
> >
> > What happens with others?
> >
> 
> I'll start reviewing the drivers as soon as time permits. We may end
> up labelling individual drivers as thread-safe if we can't get all of
> them fixed. We may also end up claiming thread-safety only for a
> subset of platforms (i.e. those which implement reentrant versions of
> functions which we cannot do without).
> 
> regards,
> Markus
> 
> --
> Markus Hoenicka
> [EMAIL PROTECTED]
> (Spam-protected email: replace the quadrupeds with "mhoenicka")
> http://www.mhoenicka.de
> 
> 
>
-----------------------------------------------------------------------
> --
> This SF.Net email is sponsored by the Moblin Your Move Developer's
> challenge
> Build the coolest Linux based applications with Moblin SDK & win great
> prizes
> Grand prize is a trip for two to an Open Source event anywhere in the
> world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> libdbi-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/libdbi-devel

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
libdbi-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libdbi-devel

Reply via email to