Skip to content

Commit 2184422

Browse files
trowskikooldev
andauthored
Merge fiber switching functions (#7106)
Co-authored-by: Martin Schröder <m.schroeder2007@gmail.com>
1 parent 291d8db commit 2184422

File tree

5 files changed

+145
-130
lines changed

5 files changed

+145
-130
lines changed

Zend/tests/fibers/fiber-status.phpt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,18 @@ $fiber = new Fiber(function (): void {
1010
var_dump($fiber->isRunning());
1111
var_dump($fiber->isSuspended());
1212
var_dump($fiber->isTerminated());
13+
14+
$nested = new Fiber(function () use ($fiber): void {
15+
echo "\nWithin Nested Fiber:\n";
16+
var_dump($fiber->isStarted());
17+
var_dump($fiber->isRunning());
18+
var_dump($fiber->isSuspended());
19+
var_dump($fiber->isTerminated());
20+
Fiber::suspend();
21+
});
22+
23+
$nested->start();
24+
1325
Fiber::suspend();
1426
});
1527

@@ -49,6 +61,12 @@ bool(true)
4961
bool(false)
5062
bool(false)
5163

64+
Within Nested Fiber:
65+
bool(true)
66+
bool(true)
67+
bool(false)
68+
bool(false)
69+
5270
After Start:
5371
bool(true)
5472
bool(false)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
--TEST--
2+
Resume previous fiber
3+
--FILE--
4+
<?php
5+
6+
$fiber = new Fiber(function (): void {
7+
$fiber1 = Fiber::this();
8+
9+
$fiber2 = new Fiber(function () use ($fiber1): void {
10+
$fiber1->resume();
11+
});
12+
13+
$fiber2->start();
14+
});
15+
16+
$fiber->start();
17+
18+
?>
19+
--EXPECTF--
20+
Fatal error: Uncaught FiberError: Cannot resume a fiber that is not suspended in %sresume-previous-fiber.php:%d
21+
Stack trace:
22+
#0 %sresume-previous-fiber.php(%d): Fiber->resume()
23+
#1 [internal function]: {closure}()
24+
#2 %sresume-previous-fiber.php(%d): Fiber->start()
25+
#3 [internal function]: {closure}()
26+
#4 %sresume-previous-fiber.php(%d): Fiber->start()
27+
#5 {main}
28+
thrown in %sresume-previous-fiber.php on line %d

0 commit comments

Comments
 (0)