Re: How to build OpenPegasus SDK as single threaded?
Kirk Augustin <[email protected]>
| Newsgroups | gmane.network.open-pegasus.general |
|---|---|
| Message-ID | <[email protected]> |
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 > > > >