The following page talks about the “C10K problem”, that is how to get Web servers to scale to the point that they can handle 10,000 concurrent connections. Along the way, there are some interesting tidbits about how to design such a server and in particular, a focus on event handling mechanisms, such as select(), poll(), epoll(), /dev/poll, kqueue
, etc.
Roughly speaking, the event notification mechanisms that perform the best vary by platform and break down like this:
FreeBSD and NetBSD | kqueue and kevent |
Linux | epoll |
Solaris | /dev/poll |
The next two links talk about some libraries that attempt to provide both portability and performance by providing an abstract event handling interface which uses the best underlying mechanism for each platform.