JavaScript에 구조적 동시성 추가하기
구조화된 동시성(Structured Concurrency)를 자바스크립트에 도입하는 방안을 탐구하는 저장소입니다.
구조화된 동시성은 자식 작업이 특정 범위에 묶이고, 해당 범위가 자식 작업 완료 또는 정리(cleanup)까지 기다린 후 종료되며, 보통 한 작업의 오류가 다른 작업을 취소하는 방식을 의미합니다.
다른 언어(Java, Python, Swift)에서는 각각의 언어 특성에 맞게 구조화된 동시성을 지원하는 기능(예: Java의 StructuredTaskScope, Python의 asyncio.TaskGroup, Swift의 async let)을 제공하지만, 자바스크립트는 기존의 AbortController를 확장하는 방식으로 이를 구현하는 방안을 제안합니다.
특히, AbortSignal.addAbortCallback 메서드 추가, AbortController의 Symbol.dispose를 이용한 자동 자원 해제, 그리고 비동기 정리 작업을 지원하는 AsyncAbortController 개념 등이 논의되며, 이를 통해 자바스크립트에서도 명시적 구문 변경 없이 구조화된 동시성에 가까운 동시 작업 관리와 취소, 정리 메커니즘을 구현할 수 있음을 보여줍니다.
이 접근법은 기존의 Promise 기반 비동기 코드와 호환되면서도, 작업 취소 시점에 안전하게 정리 작업을 수행하고, 작업 간의 취소 신호 전달을 체계화하는 실용적 가치를 지닙니다.
