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))); $scheduler->send($h, new Message('neighbors', array($g, $a))); $scheduler->send($a, new Message('start', array())); $scheduler->run();