public function __construct(SingaContinuation $cc = null)
 {
     if ($cc === null) {
         parent::__construct($this);
     } else {
         parent::__construct($cc);
     }
 }
Esempio n. 2
0
 public function suspend($timeout)
 {
     if ($timeout < 0) {
         throw new SingaIllegalArgumentException();
     }
     try {
         if (!$this->_cc->_resumed && 0 < $timeout) {
             pcntl_waitpid(-1, $this->status, WUNTRACED);
         }
     } catch (Exception $e) {
         throw new SingaRuntimeException($e);
     }
     return parent::__suspend($timeout);
 }
Esempio n. 3
0
<?php

require_once dirname(dirname(__FILE__)) . '/examples.inc.php';
require dirname(__FILE__) . '/HogeObject.php';
$continuation = new SingaDefaultContinuationImpl();
$continuation->addObject(new HogeObject());
$continuation->start();
echo "start" . PHP_EOL;
for ($i = 0; $i < 5; $i++) {
    $continuation->getObject()->execute();
}
echo "suspend main" . PHP_EOL;
$continuation->suspend(3);
for ($i = 0; $i < 7; $i++) {
    $continuation->getObject()->execute();
}
for ($i = 0; $i < 6; $i++) {
    echo "suspend sub --------------" . $i . PHP_EOL;
    $continuation->suspend(1);
    for ($c = 0; $c < 7; $c++) {
        $continuation->getObject()->execute();
    }
    $continuation->resume();
    echo "resume sub ---------------" . $i . PHP_EOL;
}
echo "resume main" . PHP_EOL;
$continuation->resume();
for ($i = 0; $i < 10; $i++) {
    $continuation->getObject()->execute();
}
$continuation->shutdown();