Kurt Mueller wrote:
On Wednesday, August 27, 2003, at 11:46 AM, mehul radheshyam
choube wrote:
i am going to develop a server program for linux platform.
the
scenario is of One Server - Multiple Clients. which of the
following
technology be used - pipes, FIFO, Message Queues or threads?
which one is
the best/widely used?
I suppose you will run this on a UNIX/UNIX-like system.
<description removed>
We have no experience in threads.
Just to add a note about threads... unless you have a very good
reason for doing so, I'd steer clear of them for several
reasons.
1. Synchronization is not as simple between threads as it is with
the various forms of IPC. IPC has well defined events which
occur (eg. data available on a pipe) and which don't necessarily
have to be actively listened for when they go off (eg. read() can
happen any time after the data is available).
2. Since all memory is shared between threads it is possible to
have interactions betweens the clients and the server that you
weren't expecting. You basically need to lock ALL memory
accesses which are not on the stack.
3. Launching a new client requires a special interface into the
application... possibly with IPC which you were trying to avoid
in the first place.
4. There is also a lack of robustness for when things go wrong in
a single thread. A segfault can bring the entire app down.
5. The most compelling reason is that you reduce the modularity
of your system. The above points are all a part of this problem,
but there are other hassles as well, such as increased
complexity, and a greater likelihood of bugs.
Threads are very useful and certainly have their place, but if
IPC is an option for you then it's highly unlikely that threads
will be useful to you.
-- Regards,
Paul Gearon
Software Engineer Telephone: +61 7 3876 2188
Plugged In Software Fax: +61 7 3876 4899
http://www.PIsoftware.com PGP Key available via finger
Catapultam habeo. Nisi pecuniam omnem mihi dabis, ad caput tuum
saxum
immane mittam.
(Translation from latin: "I have a catapult. Give me all the
money,
or I will fling an enormous rock at your head.")
_______________________________________________
This is the Linux C Programming List
: http://lists.linux.org.au/listinfo/linuxcprogramming List