On 5/2/07, Davi Arnaut <davi@xxxxxxxxxxxxx> wrote:thread A:
int fd = plfutex(addr, 0);
do
poll(fdset+fd);
process network events
queue obj to thread B
if fd:
job processed
thread B:
wait_job();
process_job();
raise_event(addr);
This is not the model you can implement with your changes. Because
every single waiter is woken you need one thread listening for the
jobs and then distribute the work. Otherwise you have thundering
herds of threads and only one gets to do some work.
epoll itself is a problem?! sorry, but i didn't know that. Care to elaborate?It simple as is, there is no need to overdesign.
There is no reason to go with a limited, too-simple minded design if
we've already identified a much better design. The fact that poll is
used today does not excuse piling on more and more code which makes
additional functions which don't fit into the poll framework barely
work. Plus, poll/epoll itself is a problem.
And you cannot talk about little changes and no "overdesign". Youdavi@karmic:~/git/linux-2.6$ find patches/ -name *.patch |grep -v syscall | wc -l
have 22 patches for all this. It's not just limited to futexes, it's
the whole thing which IMO is unnecessary ballast going forward.