}
            }
            $tmp_set = array();
            foreach ($state['channels_known'] as $pair) {
                $tmp_set = array_merge($tmp_set, $pair);
            }
            $tmp_set = array_unique($tmp_set);
            $diff = array_diff($tmp_set, $state['proc_known']);
            if (empty($diff)) {
                echo sprintf("process %s knows the communication graph \n", $state['name']);
            }
        }
        return $state;
    }
}
$scheduler = new Scheduler();
$a = $scheduler->spawn('Process', array('a'));
$b = $scheduler->spawn('Process', array('b'));
$c = $scheduler->spawn('Process', array('c'));
$d = $scheduler->spawn('Process', array('d'));
$e = $scheduler->spawn('Process', array('e'));
$f = $scheduler->spawn('Process', array('f'));
$g = $scheduler->spawn('Process', array('g'));
$h = $scheduler->spawn('Process', array('h'));
$scheduler->send($a, new Message('neighbors', array($b, $h)));
$scheduler->send($b, new Message('neighbors', array($a, $c)));
$scheduler->send($c, new Message('neighbors', array($b, $d)));
$scheduler->send($d, new Message('neighbors', array($c, $e)));
$scheduler->send($e, new Message('neighbors', array($d, $f)));
$scheduler->send($f, new Message('neighbors', array($e, $g)));
$scheduler->send($g, new Message('neighbors', array($f, $h)));
Beispiel #2
0
        return array('server' => $args['count_server']);
    }
    public function receive()
    {
        return array('count');
    }
    public function handle_count($msg, $state)
    {
        echo sprintf("%s: got count %d\n", $this->self(), $msg);
        sleep(2);
        $next = rand(0, 2);
        switch ($next) {
            case 0:
                $this->send($state['server'], new Message('incr', rand(1, 20)));
                break;
            case 1:
                $this->send($state['server'], new Message('decr', rand(1, 20)));
                break;
            case 2:
                $this->send($state['server'], new Message('get_count', array('sender' => $this->self())));
                break;
        }
        return $state;
    }
}
$scheduler = new Scheduler();
$counter = $scheduler->spawn('Counter', array());
$scheduler->spawn('CounterClient', array('count_server' => $counter));
$scheduler->spawn('CounterClient', array('count_server' => $counter));
$scheduler->spawn('CounterClient', array('count_server' => $counter));
$scheduler->run();