Nginx uses the reactor pattern. The main event loop waits for the OS to signal a readiness event such that the data is accessible to read from a socket, at which instance it is read into the buffer and processed. A Single thread can serve tens of thousands of simultaneous connections.