개요

아키텍처 섹션에서는 C 코드 수준에서 TrueAsync 핵심 컴포넌트의 내부 설계를 설명합니다: 데이터 구조, 알고리즘, Zend Engine과의 통합, PHP 코어와 비동기 확장 모듈 간의 상호작용.

이 자료는 TrueAsync가 “내부적으로” 어떻게 동작하는지 이해하거나 자체 확장 모듈을 만들 계획인 개발자를 위한 것입니다.

TrueAsync ABI

비동기 ABI의 핵심: 함수 포인터, 확장 모듈 등록 시스템, 전역 상태(zend_async_globals_t), ZEND_ASYNC_* 매크로, API 버전 관리.

코루틴, 스케줄러, 리액터

코루틴 스케줄러와 이벤트 리액터의 내부 설계: 큐(순환 버퍼), fiber를 통한 컨텍스트 전환, 마이크로태스크, libuv 이벤트 루프, fiber 컨텍스트 풀, 그레이스풀 셧다운.

이벤트와 이벤트 모델

zend_async_event_t – 모든 비동기 프리미티브가 상속하는 기본 데이터 구조. 콜백 시스템, 참조 카운팅, 이벤트 참조, 플래그, 이벤트 타입 계층구조.

Waker – 대기 및 깨우기 메커니즘

Waker는 코루틴과 이벤트 사이의 연결 고리입니다. 상태, resume_when, 코루틴 콜백, 오류 전달, zend_coroutine_t 구조체, 스위치 핸들러.

비동기 컨텍스트에서의 가비지 컬렉션

PHP GC가 코루틴, 스코프, 컨텍스트와 함께 동작하는 방식: get_gc 핸들러, fiber 스택 순회, 좀비 코루틴, 계층적 컨텍스트, 순환 참조 방지.

컴포넌트

Async\Pool

범용 리소스 풀. 다루는 주제:

PDO Pool

Async\Pool 위에 구축된 PDO 전용 레이어. 다루는 주제: