동시성 프로그래밍의 기본 개념과 병렬 처리, 멀티쓰레딩, 비동기 프로그래밍 용어 비교
쓰레드 풀, 경량 쓰레드, 비동기 프로그래밍을 활용한 동시성 프로그래밍 기법 소개
액터 모델, STM 등 메모리 공유 문제를 해결하는 다양한 동시성 설계 패턴 제시
쓰레드 풀은 쓰레드 생성 비용을 줄여 Context Switching 오버헤드를 감소시킨다. 구체적으로, 유휴 쓰레드를 재사용하여 I/O 작업의 반응성을 향상시킨다. 경량 쓰레드는 언어/런타임 레벨에서 태스크 쪼개기를 자동화하여 개발 편의성을 높인다.
Promise와 Future는 비동기 작업의 결과를 표현하는 객체이며, Async-Await는 가독성을 높이는 문법적 설탕이다. 따라서 Future 중첩 문제를 해결하고, 코드 가독성을 향상시킨다. 반면, 는 이므로, 근본적인 성능 개선을 보장하지는 않는다.
액터 모델은 메모리 공유를 피하여 경쟁 상태를 방지하고, Swift에서 Reentrancy를 통해 데드락을 해결한다. STM은 트랜잭션 기반으로 데이터 일관성을 보장하지만, 롤백으로 인한 성능 저하가 발생할 수 있다. 따라서, 액터는 응답 없는 작업에, STM은 데이터 무결성이 중요한 경우에 적합하다.