(0.8.0)
Future представляет возвращаемое значение или неперехваченное исключение из задачи и предоставляет API для отмены.
Пример #1 Пример, показывающий Future как возвращаемое значение
<?php
$runtime = new \parallel\Runtime;
$future = $runtime->run(function(){
return "Мир";
});
printf("Привет, %s\n", $future->value());
?>
Результатом выполнения данного примера будет что-то подобное:
Привет, Мир
Поведение Future также позволяет использовать его в качестве простой точки синхронизации, даже если задача не возвращает значение явно.
Пример #2 Пример, показывающий Future как точку синхронизации
<?php
$runtime = new \parallel\Runtime;
$future = $runtime->run(function(){
echo "в дочернем потоке ";
for ($i = 0; $i < 500; $i++) {
if ($i % 10 == 0) {
echo ".";
}
}
echo " выход из дочернего потока";
});
$future->value();
echo "\nродительский поток продолжает работать\n";
?>
Результатом выполнения данного примера будет что-то подобное:
в дочернем потоке .................................................. выход из дочернего потока родительский поток продолжает работать