Exemplo n.º 1
0
    def fn():
        yield tap.CallFork(acquire)
        t = yield tap.CallFork(acquire)
        yield tap.CallFork(acquire)
        yield tap.Sleep(0)
        assert a == 5

        yield tap.Cancel(t)
        yield tap.Broadcast("unlock")
        yield tap.Sleep(0.01)
        assert a == 10

        yield tap.Broadcast("unlock")
        yield tap.Sleep(0.001)
        assert a == 10
Exemplo n.º 2
0
    def fn():
        yield tap.CallFork(waits)
        yield tap.CallFork(nowaits)
        yield tap.CallFork(nowaits)
        yield tap.Sleep(0)
        assert a == 5

        # the waiting strand finally gets to acquire lock, but it is the latest
        yield tap.Broadcast("msg")
        yield tap.Sleep(0)
        assert a == 6

        yield tap.Broadcast("unlock")
        yield tap.Sleep(0.01)
        assert a == 11

        yield tap.Broadcast("unlock")
        yield tap.Sleep(0.01)
        assert a == 13
Exemplo n.º 3
0
    def fn():
        t1 = yield tap.CallFork(acquire, (1, None))
        t2 = yield tap.CallFork(acquire, (2, t1))
        t3 = yield tap.CallFork(acquire, (3, None))
        yield tap.Broadcast("2")
        yield tap.Broadcast("1")
        yield tap.Sleep(0.001)
        assert a == 5
        yield tap.Broadcast("3")
        yield tap.Broadcast(
            "2")  # this simultaneously tries to cancel 1 and unlocks

        yield tap.Sleep(0.01)
        assert a == 10

        yield tap.Broadcast("1")
        # 1 gets canceled after the acquire, so it's too late to release
        yield tap.Sleep(0.001)
        assert a == 10
        # yield tap.Join([t1, t2, t3])
        yield tap.Cancel(t3)
Exemplo n.º 4
0
 def broadcaster(value):
     yield tap.Broadcast('key', value)
     yield tap.Broadcast('key2', value)
Exemplo n.º 5
0
 def fn():
     yield tap.Broadcast('key')
     return 5
Exemplo n.º 6
0
 def wake_and_fork():
     yield tap.Fork(tap.Broadcast("wake"))
     yield tap.Fork(tap.Receive("hmm"))
Exemplo n.º 7
0
 def fn2(value):
     yield tap.Broadcast('key3', value)
     yield tap.Broadcast('key4', value)
     return 2
Exemplo n.º 8
0
 def fn1(value):
     yield tap.Broadcast('key1', value)
     yield tap.Broadcast('key2', value)
     return 1
Exemplo n.º 9
0
 def fn():
     strand = yield tap.CallFork(add_three, (5, ))
     yield tap.Broadcast('key')
     yield tap.Broadcast('key')
     yield tap.Cancel(strand)
Exemplo n.º 10
0
 def random(value):
     yield tap.Broadcast('key', value)
     return 10