from asyncio import * l = Lock() async def test(): await l.acquire() print("Lock acquired") async def test2(): await l.acquire() loop.call_soon(trigger) def trigger(): t1.cancel() l.release() loop = get_event_loop() ensure_future(test2()) t1 = ensure_future(test()) t2 = ensure_future(test()) t3 = ensure_future(test()) loop.run_forever()