두 코루틴이 효율적으로 CPU 시간을 공유합니다

코루틴 1 — 사용자 처리 반복: 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);
}
});
코루틴 2 — 로깅 + 알림 반복: 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
}
});
실행 타임라인 0 ms
코루틴 1 준비
코루틴 2 준비
0255075100ms
CPU:
대기 중
CPU 작업 중
DB 대기 중
네트워크 대기 중
0 ms
총 시간
0 ms
DB 대기
0 ms
네트워크 대기
0 ms
절약된 시간

"재생"을 클릭하여 시작하세요

이 시각화는 두 코루틴이 효율적으로 CPU를 공유하는 방법을 보여줍니다. 하나가 데이터베이스 또는 네트워크의 응답을 기다리는 동안, 다른 하나가 유용한 작업을 수행합니다. 이것이 협력적 멀티태스킹입니다.