[Twisted-Python] Re: [Twisted-commits] r15451 - Fix test failures under windows by changing the eventual-send operation to

On Dec 31, 2005, at 1:39 AM, Brian Warner wrote:
callLater(0) does not guarantee relative ordering of sequentially-scheduled calls,
Yes it does: order of method call.
and the windows reactors in fact execute them in random order.
That is broken. James

On Dec 31, 2005, at 11:59 AM, James Y Knight wrote:
On Dec 31, 2005, at 1:39 AM, Brian Warner wrote:
callLater(0) does not guarantee relative ordering of sequentially-scheduled calls,
Yes it does: order of method call.
and the windows reactors in fact execute them in random order.
That is broken.
I'm afraid this is my fault. Heapq does not guarantee stable ordering amongst elements with the same key, and on windows, two successive calls to time.time() are very likely to return the same number, because of its poor resolution. The same error could probably occur on unix/linux systems as well, although currently unlikely to the point of impossibility. It should be fixable by storing the last time of an element added to the queue, and adding epsilon if current time is the same. Just as a point of interest, on my system, this loop never finishes: import time def f(): while 1: if time.time()==time.time(): break But this one does: from time import time def f(): while 1: if time()==time(): break James
participants (1)
-
James Y Knight