def body(): cond = bluelet.Condition() handle1 = func1(cond) handle2 = func2(cond) yield bluelet.spawn(handle1, daemon=False) yield bluelet.spawn(handle2, daemon=False) yield bluelet.join(handle2)
def body(): sem = bluelet.Semaphore(0) handle1 = func1(sem) handle2 = func2(sem) yield bluelet.spawn(handle1, daemon=False) yield bluelet.spawn(handle2, daemon=False) yield bluelet.join(handle2)
def body(): sig = bluelet.Signal() handle1 = func1(sig) handle2 = func2(sig) yield bluelet.spawn(handle1, daemon=False) yield bluelet.spawn(handle2, daemon=False) yield bluelet.join(handle2)
def body(): lock = bluelet.Lock() handle1 = func1(lock) handle2 = func2(lock) yield bluelet.spawn(handle1) yield bluelet.spawn(handle2) yield bluelet.sleep(1) yield bluelet.kill(handle1) yield bluelet.sleep(1) yield bluelet.join(handle2)
def channel(port=4915): # Create a pair of connected sockets. connections = [None, None] listener = bluelet.Listener('127.0.0.1', port) def listen(): connections[0] = yield listener.accept() # Avoiding nonlocal. listen_thread = listen() yield bluelet.spawn(listen_thread) connections[1] = yield bluelet.connect('127.0.0.1', port) yield bluelet.join(listen_thread) # Wrap sockets in Endpoints. sentinel = uuid.uuid4().bytes # Somewhat hacky... yield bluelet.end((Endpoint(connections[0], sentinel), Endpoint(connections[1], sentinel)))