#!/usr/bin/env php receive())); yield $this->synchronized(function () { print "Sleeping for 3 seconds...\n"; sleep(3); yield $this->send('Data sent from child.'); print "Sleeping for 2 seconds...\n"; sleep(2); }); yield 42; }); yield $context->send('Start data'); yield $context->synchronized(function () { printf("Cooperatively sleeping in parent for 2 seconds before releasing lock...\n"); yield Coroutine\sleep(2); }); printf("Received the following from child: %s\n", (yield $context->receive())); printf("Thread ended with value %d!\n", (yield $context->join())); })->cleanup([$timer, 'stop'])->done(); Loop\run();