한 개발자가 C++17 표준을 준수하는 크로스 플랫폼 파이버(fiber) 기반 잡 시스템인 'JLib::Scheduler'를 공개했습니다. 이 시스템은 기존 윈도우(Windows) 전용 버전의 한계를 넘어, 리눅스(Linux), 안드로이드(Android), macOS 등 다양한 운영체제와 ARM64 아키텍처까지 지원하며, 성능 최적화를 통해 실시간 엔진 개발에 필요한 강력한 멀티스레딩(multithreading) 솔루션을 제공합니다.
JLib::Scheduler는 Cilk 스타일의 워크 스틸링(work-stealing)과 TaskFlow 스타일의 의존성 그래프(dependency graph)를 결합한 하이브리드 런타임입니다. 이를 통해 병렬 루프(ParallelFor, PushArray)를 빠르게 처리하고, AND/OR 게이트를 포함한 복잡한 태스크 의존성(TaskDAG)을 효율적으로 관리할 수 있습니다. 특히 GPU 펜스(fence) 대기처럼 I/O 바운드(I/O-bound) 작업 시 워커 스레드(worker thread)를 블로킹(blocking)하지 않고 파이버를 통해 작업을 일시 중단(suspend)하고 재개(resume)할 수 있어, 자원 활용 효율성을 극대화합니다. 이는 기존의 enkiTS나 Taskflow 같은 라이브러리에서는 불가능했던 기능입니다.
이 시스템은 컴퓨팅 집약적인 루프, 의존성 기반 파이프라인, 그리고 I/O 바운드 미들웨어(middleware)가 혼합된 실시간 엔진에 최적화되어 있습니다. 수작업으로 작성된 컨텍스트 스위칭(context switching), 락-프리(lock-free) 체이스-레브 데크(Chase-Lev deques), 슬랩 할당(slab-allocated) 태스크 시스템, 논리 게이트가 있는 프레임 DAG, 그리고 하이브리드 코어(hybrid-core) 인식 배치 등 저수준(low-level) 최적화가 적용되었습니다. 개발자는 이 시스템이 멀티스레드 시뮬레이션 엔진의 핵심 백본(backbone) 역할을 하도록 설계했다고 밝혔습니다. 측정 결과, 태스크 대기열 처리 지연 시간(enqueue → dequeue latency)과 DAG 실행 시간 등 여러 벤치마크에서 기존 솔루션 대비 최대 5.8배 빠른 성능을 보여주며 효율적인 자원 관리가 가능함을 입증했습니다.
JLib::Scheduler의 등장은 고성능 컴퓨팅(HPC) 및 실시간 시스템 개발 분야에 중요한 의미를 가집니다. 특히 게임 엔진, 시뮬레이션, 고성능 데이터 처리 등 복잡한 멀티스레딩 환경에서 개발자들이 겪는 난제를 해결할 수 있는 강력한 도구가 될 것입니다. 파이버 기반의 유연한 스케줄링은 스레드 풀(thread pool)의 오버헤드를 줄이고, 미들웨어와의 호환성을 높여 기존 코드베이스에 통합하기 용이합니다. 이는 개발자들이 더욱 효율적이고 안정적인 고성능 애플리케이션을 구축하는 데 기여할 것으로 기대됩니다.