Ian Kelly <ian.g.ke...@gmail.com>: > The documentation for Future.add_done_callback says: "If the future > has already completed or been cancelled, fn will be called > immediately."
That sounds really bad. There should be a guarantee that the callback is not called from the same thread before returning from Future.add_done_callback. Otherwise, the caller may have a really difficult time handling preemption and avoiding deadlocks at the same time. Example (pseudocode): def callback(self): with self.lock: ... def xyz(self, f): with self.lock: ... f.add_done_callback(self.callback) The code will deadlock if the callback is invoked immediately. Marko -- https://mail.python.org/mailman/listinfo/python-list