Phacterl\Runtime\Scheduler::send PHP Метод

send() публичный Метод

public send ( $pid, $msg )
    public function send($pid, $msg)
    {
        if (isset($this->processes[$pid])) {
            $this->processes[$pid]['inbox'][] = $msg;
            $this->msg_count++;
        }
    }

Usage Example

Пример #1
0
            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();