Why does Python threading.Condition() notify() require a lock?
问题 My question refers specifically to why it was designed that way, due to the unnecessary performance implication. When thread T1 has this code: cv.acquire() cv.wait() cv.release() and thread T2 has this code: cv.acquire() cv.notify() # requires that lock be held cv.release() what happens is that T1 waits and releases the lock, then T2 acquires it, notifies cv which wakes up T1. Now, there is a race-condition between T2's release and T1's reacquiring after returning from wait() . If T1 tries to