Re: What's the connection between objects and threads?
On May 19, 7:58 am, Jerry Coffin <jcof...@taeus.com> wrote:
In article <244547b2-0b90-45f1-a8f2-5ce84f7dd3e4
@k1g2000prb.googlegroups.com>, minof...@gmail.com says...
Yes. Copying a process with fork() is very fast. You don't get much of=
a
performance boost from using threads.
I was reading this tutorial, and a table in the document describes a
process as being about 50x more expensive than a thread. Maybe I'm
interpreting the table wrong.
https://computing.llnl.gov/tutorials/pthreads/
You seem to be interpreting the table correctly,
Note that that document doesn't specify which OS is being used,
or---in the case of Linux, which threading model. (Note that
some threading models do not allow multiple threads within a
single process to execute on different CPU's. That makes thread
creation very cheap, but sort of defeats the purpose of having
multiple CPU's.)
[...]
Of course, that depends heavily on the rest of the design.
Quite a few people try creating a new thread for every
incoming connection. This would almost certainly be disastrous
if you created a new process for every connection instead.
That really depends on what the protocol is doing. FTP and
telnet, at least in the implementations I use, spawn a separate
process for each connection.
OTOH, if you create some sort of thread/process pool, then you
only incur that 50x overhead a few times while your server
starts up. After that, you might incur some overhead from
inter- rather than intra- process communication, but that's
mostly a separate question.
Process pools are a lot more difficult to manage than thread
pools, because you do have to communicate with a running process
in order to use them. (Although... under Solaris, at least, you
can put conditions and mutexes in shared memory, and access them
from different processes. so the difference isn't that great.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=EF=BF=BDe objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=EF=BF=BDmard, 78210 St.-Cyr-l'=EF=BF=BDcole, France, +33 (0)1 30 2=
3 00 34