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