core: wake Waker outside of lock.
Given: - Broker asleep in poll() - thread B calling Latch.put() Previously, - B takes lock, - B wakes socket by dropping GIL and writing to it - Broker wakes from poll(), acquires GIL only to find Latch._lock is held - Broker drops GIL, sleeps on futex() for _lock - B wakes, acquires GIL, releases _lock - Broker wakes from futex(), acquires lock Now, - B takes lock, updates state, releases lock - B wakes socket by droppping GIL and writing to it - Broker wakes from poll(), acquires GIL and _lock - Everyone lives happily ever after.pull/607/head
parent
807cbef9ca
commit
d6faff06c1
Loading…
Reference in New Issue