On 12/14/2011 05:45 AM, Glyph wrote:
On Dec 13, 2011, at 2:04 PM, Andrew Francis wrote:
Now at time T, there are eight reindeer and two elves ready. At T+1, an additional reindeer and
elf are ready (their timestamps are the same, timer resolution notwithstanding). However the
Twisted reactor will serialise the events and trigger the callback. For argument, let us pretend
the elvesArrive callback is activated and that wakes Santa. Santa consults with the elves. The
problem is that all nine reindeer were ready and the priority rule is broken. I am not sure, from
inside the callback, one could check to see if nine reindeer were indeed ready.
This strikes me as a problem with the way that quantum physics works more than the way that
Twisted's reactor works :). Broadly speaking, no two events can happen at the /exact/ same time;
even if they did, relativity says you wouldn't be able to /tell/ if they happened at the exact
same time unless they also happened to be exactly the same distance away from you. (But then
"you" would have to be exactly one atom big, which is a pretty demanding size to build a sensor.)
[...]
Ultimately however, the order of the work /will/ be arbitrary; if it's not influenced by the
vagaries of Twisted's scheduler, it will be influenced by something in the kernel scheduler that
you don't understand or can't control, or in the IP stack, or in a switch on your network, or in
your hosting provider's firewall configuration, or something on a client machine that you truly
have no influence over at all. Having something give priority to an event that occurs at "the
same" time given all of these potential sources of interference is basically pointless.
Isn't that what logical clocks, using e.g. Lamport timestamps are for? What can be done is letting
the events happen, wait for another logical tick, possibly triggered by a timeout to prevent
starvation, looking at the events that have been collected and identified, but not processed yet,
treating a certain maximum N of logical ticks as "simultaneous" and then decide on how to prioritize
processing, based on arbitrary rules you choose.
regards,
Johann
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python