Re:Select(2) is fundamentally broken
by majke on Friday January 06, 2017 @05:30AM
(#13335293)
Imagine a kernel has a data structure for each socket. When a process blocks on that socket, a kernel must "register" it on it.
So that - when an event on a socket happens, the kernel instantly knows which processes to wake up. A reverse lookup: given socket, return list of blocking processes.
I'm arguing that maintaining this reverse lookup is a hard work, especially when you need to set it up it and tear it down on every call to select().
So that - when an event on a socket happens, the kernel instantly knows which processes to wake up. A reverse lookup: given socket, return list of blocking processes.
I'm arguing that maintaining this reverse lookup is a hard work, especially when you need to set it up it and tear it down on every call to select().