folly::ManualExecutor — 결정적 테스트를 위한 수동 진행
ManualExecutor는 schedule된 task를 자동 실행하지 않고 run()/drive() 호출 시점에만 진행한다. 비동기 코드의 단위 테스트에 결정성을 부여한다.
89개의 포스트 · 4/4 페이지
ManualExecutor는 schedule된 task를 자동 실행하지 않고 run()/drive() 호출 시점에만 진행한다. 비동기 코드의 단위 테스트에 결정성을 부여한다.
IOThreadPoolExecutor는 각 worker thread에 EventBase를 두어 libevent 기반 I/O와 timer를 처리한다.
CPUThreadPoolExecutor는 CPU 집약 작업을 위한 thread pool. priority queue, blocking queue, thread factory를 조합한다.
InlineExecutor는 add()의 caller thread에서 callback을 그 자리에서 실행한다. 테스트와 단축 경로에 적합하지만 production hot path에는 위험하다.
Folly fibers는 boost.context 기반 stackful coroutine. 동기 코드처럼 쓰고 비동기로 동작하는 M:N 모델.
Future 조립의 제어 흐름 — 재시도, 동시성 윈도, executor 전환.
여러 SemiFuture를 모으는 세 가지 의미 — 모두 성공, 모두 완료, 하나만 완료.
Future continuation API의 세 변형 — 정상값, 예외, 통합 처리. .then은 deprecated.
SemiFuture는 executor에 바인딩되지 않은 상태, Future는 바인딩 완료 상태. 이 구분이 라이브러리 API의 안전성을 만든다.
folly::Promise로 비동기 완료를 표현하고, makeFuture/makeSemiFuture로 이미 결정된 값을 Future 인터페이스에 올린다.
folly::Future가 std::future의 어떤 한계를 해결하는가 — continuation, executor binding, exception 전파.
Folly 컴포넌트가 Meta production scale에서 어떻게 검증되는가 — 외부 사용자가 신뢰해도 되는 부분과 주의할 부분.
Folly의 API/ABI 안정성 정책 — Meta의 입장과 외부 사용자가 따라야 할 전략.
Folly의 빌드 구조 — Meta 내부 fbcode/Buck, OSS는 CMake. 외부 빌드에서 마주치는 함정.
두 라이브러리의 설계 결정을 항목별로 비교 — 예외, 의존성, async 모델, ABI 정책.
Folly의 출발점, 구성, std/Abseil과의 차별점 — Meta production에서 단련된 high-performance C++ 라이브러리.
Meta(Facebook)가 production에서 검증한 Folly C++ 라이브러리를 code review의 시선으로 읽는다. performance-first 철학과 fbcode 환경의 산물을 14 Parts 63편으로 살펴본다.