Re: threads and kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Benoit,

On 10/22/07, Benoit Fouet <benoit.fouet@xxxxxxxxxxxxxx> wrote:
> Hi Steve,
>
> Steve Graegert wrote:
> > Hi Benoit,
> >
> > On 10/22/07, Benoit Fouet <benoit.fouet@xxxxxxxxxxxxxx> wrote:
> >
> >> Hi,
> >>
> >> Steve Graegert wrote:
> >>
> >>> As a side note: you can safely use dlopen()  to load shared libraries,
> >>> whether or not they depend on libpthread.so, as long as the main
> >>> program was initially threaded.  The other way round is dangerous and
> >>> mostly not allowed.
> >>>
> >>>
> >>>
> >> could you please elaborate a bit on that ? i cannot see why this is
> >> dangerous.
> >>
> >
> > I was referring to making an application multithreaded at runtime.
> > Therefore you cannot use dlopen() to dynamically add libpthread.so to
> > a process when the main program is not __initially threaded__.  By
> > "initially threaded" I mean that the libpthread.so  library is
> > initialized at program start, either because the main program links
> > against libpthread.so directly, or because it links against some other
> > shared library that links against libpthread.so.
> >
> > Dynamically changing the process environment from "nonthreaded" to
> > "threaded" is dangerous and rarely useful (I actually doubt that this
> > "feature" is useful at all).
>
> If i understand correctly what you're saying, you cannot have something
> like:
>
> int main(int argc, char *argv[]) {
>   /* ... */
>   foo = dlopen("bar.so");
>   /* use bar.so functions, clean, etc... */
> }
>
> if bar.so is multithreaded (and thus, linked to libpthread.so) and you
> don't compile your main program with -lpthread option.
> did i understand you right ?
>
> this would mean you may need to link against pthread library, just in
> case the library(ies) you dlopen might use it ?

Linking against a multi-threaded library at compile time, turns the
main program into a multi-threaded program even though no use of
threads is being made at all.

	\Steve

--

Steve Grägert
DigitalEther.de
-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux