3 ms·
Crazy that IOCPs were in NT 3.5 in 1994[1], but it took FreeBSD until 2000 to add kqueue[2], and Linux until 2002 to add epoll[3][4]. I guess it just must not
by kogir 11y ago
Crazy that IOCPs were in NT 3.5 in 1994[1], but it took FreeBSD until 2000 to add kqueue[2], and Linux until 2002 to add epoll[3][4].
I guess it just must not have mattered that much? Is it only recently machines became primarily IO bound?
[1]https://en.wikipedia.org/wiki/Windows_NT_3.5
[2]https://en.wikipedia.org/wiki/History_of_FreeBSD
[3]https://en.wikipedia.org/wiki/Epoll
[4]https://lwn.net/Articles/13197/
- chubot 11y agoI think being I/O bound is orthogonal to whether you need kqueue or epoll. You could be I/O bound on a small number of simultaneous sockets, in which case select() would work fine. Or you can be I/O bound on a lot, in which case select() would take too much CPU by scanning the descriptor table repeatedly. http://stackoverflow.com/questions/970979/what-are-the-differences-between-poll-and-select http://stackoverflow.com/questions/970979/what-are-the-diffe...
- kogir 11y agoOh, that makes sense. Older servers couldn't handle enough clients for connection related limits to matter.
- trentnelson 11y agoIOCP is just the user-facing artifact; the interesting piece is the I/O request packet, or Irp, at the kernel level, which dates back to VMS.