Re: How to build OpenPegasus SDK as single threaded?

Kirk Augustin <[email protected]>
Newsgroups gmane.network.open-pegasus.general
Message-ID <[email protected]>
If all you want to do is build a client, then how Pegasus is built does not at all matter.
The interface between the client and the Pegasus servers is just http text over sockets.
There is no binary interaction, so no concerns over threading or library dependencies.
So while I always build my clients as single threaded, I never care that Pegasus is built multi threaded.
A multi threaded client would be pointless and dangerous, while a multi threaded server is essential.
They are just very different and unrelated.
But a client does not call Pegasus like a library.
They communicate over a network channel that makes their interaction perfectly safe.

But I do not understand when you say, "my client binary will be performing basic operations like enumerations, 
listing association kind of stuff, and for these operations Pegasus do 
not create any threads."
Because for Pegasus to perform basic operations like enumerations, associations, etc., it always has to create threads.
These operations are performed by Pegasus calling additional providers, which each require their own thread to be safely called.

 
Kirk Augustin
11821 NW McNamee Rd
Portland, OR 97231


HM: 503-289-4356


>________________________________
> From: Pranav S <[email protected]>
>To: Kirk Augustin <[email protected]> 
>Cc: Devchandra Leishangthem <[email protected]>; "[email protected]" <[email protected]> 
>Sent: Saturday, April 7, 2012 10:03 PM
>Subject: Re: How to build OpenPegasus SDK as single threaded?
> 
>
>Hi Kirk,
>
>If single threaded library wants to use a multi threaded one, or assume an application binary is linking indirectly to multi threaded one, then the entire build chain has to be built with multi threading enabled. Now as I am more focused towards writing a client side binary, I am not using any of multi threaded piece of code from the Pegasus library. So why should I unnecessarily build multi threaded one? and my client binary will be performing basic operations like enumerations, listing association kind of stuff, and for these operations Pegasus do not create any threads.
>
>I agree on what you are saying if I were to focus on a Provider, which will plug into server, serving to the multiple client requests.
>
>I still think we need to have switch to enable/disable multi threading.
>
>
>On 7 April 2012 23:40, Kirk Augustin <[email protected]> wrote:
>
>It is unsafe for a single thread to call a multi-thread, but perfectly safe for a multi-thread to call a single thread.
>>Multi-threading is the only safe way a service like Pegasus can call providers.
>>If not multi threaded, then one faulty provider can corrupt all providers, as well as Pegasus, with an infinite deadlock.
>>On HP UX you can mix multi thread and single thread.  
>>
>>You just have to careful about singe thread library calling multi threaded libraries.
>>Multi-threaded libraries have to call single threaded libraries all the time.
>>A single thread library should always be passed data by value instead of reference, so should never need any synchronization protection.
>>
>>That can not possibly be a problem on any system.
>>
>>
>>You are using the multi threading piece of code in Pegasus.
>>It can not be unused.  
>>
>>Pegasus is a remote network, communications systems, server, relying on sockets and an unknown number of provider plug-ins.
>>It would be virtually inconceivable to imagine a good way that could be done without multi-threading.
>>You could greatly increase the number of independent processes instead, and created more sockets or pipes to try to share data, but multi-threading is a much better solution to a multi tasking server like this.
>>Your providers are best compiled as out of process, so have nothing to do with threading at all.
>>Threading is only important within Pegasus.
>>The question of threading really is not relevant because Pegasus is in control of what it calls, so will do so safely.
>>All you have to worry about is your providers.
>>
>> 
>>Kirk Augustin
>>11821 NW McNamee Rd
>>Portland, OR 97231
>>
>>
>>HM: 503-289-4356
>>
>>
>>>________________________________
>>> From: Pranav S <[email protected]>
>>>To: Kirk Augustin <[email protected]> 
>>>Cc: Devchandra Leishangthem <[email protected]>; "[email protected]" <[email protected]> 
>>>Sent: Saturday, April 7, 2012 10:37 AM
>>>
>>>Subject: Re: How to build OpenPegasus SDK as single threaded?
>>> 
>>>
>>>
>>>On HP UX we cannot mix single threaded libraries with, multi-threaded ones. It might cause undefined behaviour.
>>>And, if an application links to multi-threaded library directly or indirectly, it has to be built with multi-threading (-mt option) enabled. As I am not using multi threaded piece of code from pegcommon(src/Common), I am expecting it to be disabled. Why unnecessarily create a dependency on pthread library? I believe it is good to have a flag in configure files
>>> for enabling/disabling the multi-threading.
>>>
>>>
>>>
>>>On 6 April 2012 22:00, Kirk Augustin <[email protected]> wrote:
>>>
>>>But if you turned off multi threading in Pegasus, you would create and ensure the very condition you are concerned about avoiding.
>>>>You would cause a single threaded library to be linked with multi threaded ones.
>>>>The only safe solution is to make sure Pegasus is multi treaded, so that you avoid the possibility of a single threaded library being linked to a multi threaded one.
>>>>There is no risk in a multi threaded library linking to a single threaded one because a single threaded library gets multiple copies.
>>>>Only the other way around is risky.
>>>>There is only one copy of a multi threaded library, and you do not want single threaded libraries linking because then more than one could end up linking at the same time.
>>>>
>>>> 
>>>>Kirk  Augustin
>>>>11821 NW McNamee Rd
>>>>Portland, OR 97231
>>>>
>>>>
>>>>HM: 503-289-4356
>>>>
>>>>
>>>>>________________________________
>>>>> From: Pranav S <[email protected]>
>>>>>To: Devchandra Leishangthem <[email protected]> 
>>>>>Cc: [email protected] 
>>>>>Sent: Friday, April 6, 2012 4:38 AM
>>>>>Subject: Re: How to build OpenPegasus SDK as single threaded?
>>>>> 
>>>>>
>>>>>
>>>>>I some where read, on HPUX and AIX linking single threaded libraries to multi threaded causes undefined behaviour. Hence I was trying to to build openpegasus libs as single threaded. I see libpegcommon uses pthread library. I would like to know if there is way to turnoff the multithreading. In HPUX Makefiles I see "-mt" option being used to enable threads support.
>>>>>
>>>>>I see Pegasus/Common has thread pool implementation, which is not always being used by the applications consuming OenPegasus SDK.
>>>>>Let me know if I am wrong somewhere.
>>>>>
>>>>>Thank You,
>>>>>Pranav 
>>>>>
>>>>>
>>>>>On 6 April 2012 16:22, Devchandra Leishangthem <[email protected]> wrote:
>>>>>
>>>>>Is there any specifi reason why you wanted to build uni-threaded?
>>>>>>Warm Regards
>>>>>>D>L> Meetei
>>>>>>IBM India System and Technology Lab
>>>>>>EGL -D,Bangalore, India
>>>>>>
>>>>>>
>>>>>>
>>>>>>From:   Pranav S <[email protected]>
>>>>>>To:     [email protected],
>>>>>>Date:   04/06/2012 04:06 PM
>>>>>>Subject:        How to build OpenPegasus SDK as single threaded?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>Hello,
>>>>>>
>>>>>>I am trying to explore OpenPegasus SDK and its applications. Currently the
>>>>>>SDK uses multi threading and links to pthreads library, hence it gets built
>>>>>>as a multithreaded. I would like to know is it possible to build the
>>>>>>library as single threaded? Do we have provision for that in the Makefiles.
>>>>>>I tried exploring but did not find anything which tells that it is possible
>>>>>>to build the library as single threaded one. Because linking a single
>>>>>>threaded library to a multithreaded library can lead to undefined
>>>>>>behaviour.
>>>>>>
>>>>>>--
>>>>>>Thanks,
>>>>>>Pranav
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>-- 
>>>>>Thanks,
>>>>>Pranav
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>-- 
>>>Thanks,
>>>Pranav
>>>
>>>
>>>
>>>
>
>
>-- 
>Thanks,
>Pranav
>
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.