▲ 그림 2-9 비동기 프로그래밍 환경이 작동하려면 네 가지 요소(구문, 타입, 런타임, 커널 추상화)가 필요하다
요약하면 비동기 프로그래밍 환경을 이루는 네 가지 요소는 다음과 같다.
• epoll, select, poll을 통해 커널의 비동기 읽기 및 쓰기 API를 사용한다(자세한 내용은 http://mng.bz/09zx를 참조).
• 사용자 공간에서 실행 시간이 긴 작업을 다른 곳으로 넘기고, 작업이 완료되면 작업을 진행할 수 있도록 알려주는 메커니즘이 있다. 그린 스레드를 만들고 관리하는 런타임이 이를 담당한다.
• 프로그래밍 언어 내의 구문으로, 컴파일러가 비동기 블록으로 수행할 작업을 이해할 수 있도록 코드에서 비동기 블록을 표시할 수 있다.
• 상호 배타적인 접근과 수정을 위한 표준 라이브러리의 특정 타입이다. 정해진 값을 저장하는 number와 같은 타입 대신 비동기 프로그래밍을 위한 타입은 값과 함께 실행 시간이 긴 작업에서의 현재 상태를 저장해야 한다.