I connected one client to a blocking TCP server and held the socket open without sending a single byte. Then I connected a second client and sent it a line of text. The second client sat there for 1.51 seconds with no reply. It got its echo back one millisecond after I closed the first connection.
That 1.51 seconds is the reason the other six versions of this server exist.
Last week I wrote up why I rebuilt this server seven times: framework knowledge resets every few years, the layer underneath it compounds. That piece stayed at the level of outcomes. This one goes the other way, down into the code and the numbers.
The claims that matter here are the kind you can read a hundred times without being able to derive them. "select is O(n)." "epoll only hands you the ready fds." I had read both for years. I wanted to make my own machine say them out loud.
The target the whole exercise is built around is Dan Kegel's old C10K problem: how do you serve ten thousand clients at once on one server? Each of the seven versions hits a wall, and the wall is what names the next one.






