실행 결과를 보면 1초 후 보였어야 할 callback executed가 cpu_bound_task 함수의 실행이 끝난 후에야 보이는군요. 5초나 지나서 말이지요. 그 이유는 setTimeout에 전달된 콜백 함수가 내부 스레드를 거쳐 큐에 들어가 있다고 해도 콜 스택이 cpu_bound_task를 실행하느라 비워져 있지 않아 큐에서 콜 스택으로 올릴 수 없어 실행할 수 없었던 것입니다. 자바스크립트 엔진이 싱글 스레드에서 비동기로 콜백 함수를 호출할 수 있었던 이유가 스택과 큐 덕분이었다니 신기하기도 하고 자료 구조를 잘 배웠다는 생각도 드는군요.
이로써 필자가 하고 싶었던 자료 구조 이야기를 모두 마쳤습니다. 이 책에서 다루지 않은 자료 구조도 많고 아직 공부해야 할 알고리즘도 많이 있을 것입니다. 이 책이 그 시작점에서 조금이나마 도움이 되었으면 좋겠습니다.