See Dean's full proposal in process-model.html ---- There is a decent discussion of Win NT completion ports at: http://premium.microsoft.com/msdn/library/techart/html/servrapp.htm and a so-so discussion of Win32 multithreading performance at: http://premium.microsoft.com/msdn/library/techart/html/threadli.htm The latter can be a bit trivial (eg. IO bounds tasks generally work better when concurrently executed in multiple threads, CPU bound tasks work best when serialized. duh.) but has some useful stuff in. It appears that the best way for static content on NT is to use TransmitFile, completion ports, plus a cache of file handles. Win32 doesn't support all of that, but that isn't a big deal. Completion ports appear to be able to map into async IO (ie. aio_* stuff) on Unix fine, however from what I understand some systems don't implement AIO for sockets.