Ejemplo n.º 1
0
    def main():
        m = Mutex()
        c = Cond(m)
        n = 100
        running = makechan(n)
        awake = makechan(n)

        for i in range(n):
            go(test, i, m, c, running, awake)

            if i > 0:
                a = awake.recv()
                assert a == (i - 1), "wrong coroutine woke up: want %d, got %d" % (i-1, a)

            running.recv()
            with m:
                c.signal()
Ejemplo n.º 2
0
    def main():
        m = Mutex()
        c = Cond(m)
        n = 2
        running = makechan(n)
        awake = makechan(n)

        for i in range(n):
            go(test, m, c, running, awake)

        for i in range(n):
            running.recv()

        while n > 0:
            ret = select(awake.if_recv(), default)
            assert ret != awake.if_recv(), "coroutine not asleep"

            m.lock()
            c.signal()
            awake.recv()
            ret = select(awake.if_recv(), default)
            assert ret != awake.if_recv(), "too many coroutines awakes"
            n -= 1
        c.signal()