Lab 03: Fiber Internals
Overview
Step 1: Fiber Fundamentals
Main thread
│
├─→ Fiber::start() ──────────────────────→ [Fiber executes]
│ │
│ Fiber::suspend($value) ←────────────────────────┘
│ (main receives $value via getReturn() or resume())
│
├─→ Fiber::resume($input) ───────────────→ [Fiber continues]
│
└─→ [Fiber returns / terminates]<?php
// Basic Fiber lifecycle
$fiber = new Fiber(function(): string {
echo "Fiber: starting\n";
$input = Fiber::suspend('first yield');
echo "Fiber: received '$input'\n";
$input2 = Fiber::suspend('second yield');
echo "Fiber: received '$input2'\n";
return 'fiber done';
});
echo "Main: before start\n";
$val1 = $fiber->start(); // starts fiber, gets first suspended value
echo "Main: fiber yielded '$val1'\n";
$val2 = $fiber->resume('hello'); // resumes fiber with value
echo "Main: fiber yielded '$val2'\n";
$fiber->resume('world'); // fiber completes
echo "Main: fiber return = '" . $fiber->getReturn() . "'\n";
echo "Main: fiber terminated = " . ($fiber->isTerminated() ? 'yes' : 'no') . "\n";Step 2: Fiber State Machine
Step 3: Cooperative Scheduler — Round Robin
Step 4: Priority Scheduler
Step 5: Fiber + Generator Combination
Step 6: Async HTTP Simulation
Step 7: Fiber Error Handling
Step 8: Capstone — Full Cooperative Scheduler with I/O Simulation
Summary
Feature
API
Use Case
Last updated
