Interactivo
Cómo funcionan las corrutinas
Dos corrutinas comparten eficientemente el tiempo de CPU: mientras una espera la base de datos o la red, la otra realiza trabajo útil.
Corrutina 1 · Procesamiento de usuariosIteración: 0/3
$coro1 = spawn(function() {
$pdo = new PDO($dsn);
foreach ([1,2,3] as $id) {
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=?");
$stmt->execute([$id]); // ⏳ 15ms
$user = $stmt->fetch();
processUser($user);
}
});
Corrutina 2 · Registros y notificacionesIteración: 0/3
$coro2 = spawn(function() {
$pdo = new PDO($dsn);
$socket = fsockopen($host, 9000);
foreach (['login','click','logout'] as $e) {
$stmt = $pdo->prepare("INSERT INTO logs VALUES(?)");
$stmt->execute([$e]); // ⏳ 12ms
fwrite($socket, $e); // ⏳ 20ms
}
});
Cronología de ejecución
CPU: Trabajando0 ms
CPU
Coroutine 1
Coroutine 2
0255075100
Velocidad
CPU trabajandoCPU (corrutina 2)Esperando la BDEsperando la red
0 ms
Tiempo total
0 ms
Espera de BD
0 ms
Espera de red
0 ms
Tiempo ahorrado
Multitarea cooperativa
Esta visualización muestra cómo dos corrutinas comparten eficientemente la CPU. Mientras una espera una respuesta de la base de datos o la red, la otra realiza trabajo útil, y ningún hilo se bloquea nunca. En comparación con la ejecución secuencial (162 ms), la planificación cooperativa termina el mismo trabajo en 108 ms.