From: Antoine Pitrou Date: Mon, 5 Dec 2011 00:32:29 +0000 (+0100) Subject: Remove the outdated notion that multithreading doesn't work well on Unices. X-Git-Tag: v3.2.3rc1~313 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa03f6c863c35204af5b618454f530dc5094ccff;p=thirdparty%2FPython%2Fcpython.git Remove the outdated notion that multithreading doesn't work well on Unices. --- diff --git a/Doc/howto/sockets.rst b/Doc/howto/sockets.rst index 04e9b98b2c29..3d8ade9bd071 100644 --- a/Doc/howto/sockets.rst +++ b/Doc/howto/sockets.rst @@ -395,19 +395,13 @@ Performance There's no question that the fastest sockets code uses non-blocking sockets and select to multiplex them. You can put together something that will saturate a -LAN connection without putting any strain on the CPU. The trouble is that an app -written this way can't do much of anything else - it needs to be ready to -shuffle bytes around at all times. - -Assuming that your app is actually supposed to do something more than that, -threading is the optimal solution, (and using non-blocking sockets will be -faster than using blocking sockets). Unfortunately, threading support in Unixes -varies both in API and quality. So the normal Unix solution is to fork a -subprocess to deal with each connection. The overhead for this is significant -(and don't do this on Windows - the overhead of process creation is enormous -there). It also means that unless each subprocess is completely independent, -you'll need to use another form of IPC, say a pipe, or shared memory and -semaphores, to communicate between the parent and child processes. +LAN connection without putting any strain on the CPU. + +The trouble is that an app written this way can't do much of anything else - +it needs to be ready to shuffle bytes around at all times. Assuming that your +app is actually supposed to do something more than that, threading is the +optimal solution, (and using non-blocking sockets will be faster than using +blocking sockets). Finally, remember that even though blocking sockets are somewhat slower than non-blocking, in many cases they are the "right" solution. After all, if your