오류 처리에서 구조적 동시성으로
동시성 프로그램의 오류 처리 문제를 다루며, 단일 스레드 환경에서의 스택 언와인딩 기반 예외 처리 패턴을 소개합니다.
동시성 환경에서는 단일 호출 스택이 없기 때문에, 오류가 발생한 작업의 예외를 어디로 전달할지, 그리고 어떻게 처리할지에 대한 새로운 접근이 필요합니다.
Python의 asyncio의 Task 객체처럼, 작업을 기다릴 수 있는 구조를 도입해 예외를 호출자에게 전달하는 방식을 제안하며, 이를 확장해 모든 작업을 부모-자식 관계의 트리 구조로 관리하는 구조적 동시성(Structured Concurrency) 패러다임을 소개합니다.
이 패러다임은 작업 간 취소(cancellation) 메커니즘을 포함하여, 하나의 작업에서 예외가 발생하면 관련된 모든 작업을 신속히 종료하고 자원을 정리할 수 있게 하여, 오류 전파와 자원 해제를 체계적으로 수행할 수 있도록 합니다.
결과적으로, 구조적 동시성은 동시성 프로그래밍의 오류 처리와 디버깅을 훨씬 쉽게 만들며, 안정적이고 유지보수하기 좋은 동시성 코드를 작성하는 데 큰 실용적 가치를 제공합니다.