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()