async def routineLock(key): l = Lock(key, rc.scheduler) locked = l.beginlock(rc) if not locked: await rc.wait_with_timeout(0.2) await l.lock(rc) t = obj[0] await rc.do_events() obj[0] = t + 1 l.unlock() await rc.do_events() await l.lock(rc) t = obj[0] if t != 2: obj[0] = t - 1 l.unlock()
async def routineLock(key): l = Lock(key, rc.scheduler) locked = l.beginlock(rc) if not locked: await rc.wait_with_timeout(0.2) locked = l.trylock() if not locked: raise ValueError('Not locked') t = obj[0] await rc.do_events() obj[0] = t + 1 l.unlock() await rc.do_events() await l.lock(rc) t = obj[0] await rc.do_events() obj[0] = t + 1 l.unlock()
def routineLock(key): l = Lock(key, rc.scheduler) locked = l.beginlock(rc) if not locked: for m in rc.waitWithTimeout(0.5): yield m for m in l.lock(rc): yield m t = obj[0] for m in rc.waitWithTimeout(1.0): yield m obj[0] = t + 1 l.unlock() for m in rc.doEvents(): yield m for m in l.lock(rc): yield m t = obj[0] if t != 2: obj[0] = t - 1 l.unlock()
def routineLock(key): l = Lock(key, rc.scheduler) locked = l.beginlock(rc) if not locked: for m in rc.waitWithTimeout(1.0): yield m locked = l.trylock() if not locked: raise ValueError('Not locked') t = obj[0] for m in rc.waitWithTimeout(0.5): yield m obj[0] = t + 1 l.unlock() for m in rc.doEvents(): yield m for m in l.lock(rc): yield m t = obj[0] for m in rc.waitWithTimeout(1.0): yield m obj[0] = t + 1 l.unlock()