thread support in GPGME (was: Re: Bug in gpgme 0.4.2?)
Marcus Brinkmann
Marcus.Brinkmann at ruhr-uni-bochum.de
Fri Aug 22 15:19:02 CEST 2003
On Fri, Aug 22, 2003 at 01:45:39PM +0200, Albrecht Dre? wrote:
> Am 20.08.03 22:59 schrieb(en) Marcus Brinkmann:
> >What is still missing is support for that in gpgme-config, which will get
> >a
> >new option --thread= to select the thread package, and new autoconf
>
> That should be a usable implementation for balsa, as the config script
> knows if threads should be used or not...
Yeah, in general the application this is finally linked to its
libraries will know if it wants thread support or not.
> >would have to download, compile, install, and maintain. We thought long
> >about it, and eventually decided that wasting a bit of disk space is
> >better than wasting a lot of man power, so this is what we are doing now.
>
> Sounds complicated. Did you think about a new function like
> "gpgme_init_threads({"pthread"|"pth"|...})" to trigger the thread
> initialisation? Maybe that's easier to maintain...
Yes, we considered that, but what do you do if you have a library
using GPGME? Then you'd have to export the interface to give the user
of that library a choice.
It would also not eliminate the link order problem using libtool.
In the end, even the current solution is not ideal in the case of a library using GPGME, as such a library needs to make a decision to which of the GPGME
variants it wants to be linked to! And this is sort of problematic,
but I don't really know a solution, except to provide several variants of that library if necessary.
Also please note that you can not freely mix threaded and non-threaded
code, at least not in GNU/Linux based systems. libpthread overrides
functions like fork, and that can cause spurious failures (like, for
example, if you have a single-threaded apache and link it with a
threaded mod_python).
We can only hope that eventually all applications will always link to
pthread, and no other thread system exists that people want to use :)
Thanks,
Marcus
More information about the Gnupg-devel
mailing list