Re: threads and kernel

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

 



Hi,

Steve Graegert wrote:
> 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.
>
>   

i agree, but this was not what i asked.
consider a library foo using threads.
consider a main program bar only linked to dl.
chat you said is that bar cannot use sanely foo functions, because it is
not multithreaded itself, right ?

Ben

-
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