비동기 프로그래밍, Async/Await 설계 공간 탐구

여러 언어의 async/await 설계를 비교한 논문 'A Design Space Exploration of Async/Await'가 발표됐다. 연구진은 7개 현대 async 런타임에서 백그라운드 로그 작성 예제 프로그램을 실행한 결과 4가지 서로 다른 출력이 나왔고, 3가지 변형 프로그램에서는 두 런타임도 동일한 결과를 내지 않았다고 밝혔다. 논문은 Eagerness(핫/콜드 시작), Suspension(정적/동적), Extent 등 Start of Life·End of Life·Cancellation 3개 범주에 걸친 9가지 설계 차원을 식별했다.

AI 요약

브라운대 연구팀이 async/await의 설계 공간을 탐구한 논문 "A Design Space Exploration of Async/Await"를 발표했습니다. async/await는 직선형 비동기(straight-line asynchrony) 패러다임으로 불리며 15년 이상 발전해왔지만, 언어마다 동작 방식이 예상보다 훨씬 다릅니다. 단순한 로그 작성 프로그램조차 7개 런타임에서 4가지 다른 출력을 보였고, 3가지 변형에서는 두 런타임도 동일한 결과를 내지 않았습니다. 논문은 Eagerness(즉시성), Suspension(중단), Extent(범위) 등 9가지 설계 차원을 식별했습니다.

핵심 포인트

  • 7개 현대 async 런타임이 동일 프로그램에서 4가지 다른 출력 생성
  • 3가지 변형 프로그램에서 7개 런타임 중 동일 출력을 내는 쌍이 하나도 없음
  • "Eagerness" 차원: Lazy(Python·Rust) vs Eager(C#·JavaScript)로 구분
  • 9가지 설계 차원을 Start of Life, End of Life, Cancellation 3범주로 분류

향후 전망

  • 언어 간 async/await 의미론 차이에 대한 표준화 논의 촉발 가능성
  • 개발자들이 자신이 사용하는 언어의 async 시맨틱을 정확히 이해할 필요성 부각
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...