A Web server needs to support concurrency. The server should service clients in a timely, fair manner to ensure that no client starves because some other client causes the server to hang. Three Ways to Web Server Concurrency article tells that multiprocessing and multithreading, and hybrids of these, are traditional ways to achieve concurrency. Node.js represents another way, one based on system libraries for asynchronous I/O. Read Three Ways to Web Server Concurrency article if you are interested in multiprocessing, multithreading and evented I/O: the trade-offs in Web servers. To highlight the trade-offs among the approaches, the article has three implementations of echo servers written in close-to-the-metal C: a forking_server, a threading_server and a polling_server.