더북(TheBook)

실행할 때마다 시간과 순서가 달라집니다. 스레드 풀이 작업을 동시에 처리하므로 여덟 개의 작업 중에서 어느 것이 먼저 처리될지 모릅니다. 하지만 하나의 규칙을 발견할 수는 있습니다. 1~4와 5~8이 그룹으로 묶여져 있고, 5~8이 1~4보다 시간이 더 소요됩니다. 바로 기본적인 스레드 풀의 개수가 네 개이기 때문입니다. 스레드 풀이 네 개이므로 처음 네 개의 작업이 동시에 실행되고, 그것들이 종료되면 다음 네 개의 작업이 실행됩니다. 만약 여러분 컴퓨터의 코어 개수가 4보다 작다면 다른 결과가 생길 수는 있습니다.

▲ 그림 3-14 스레드 풀 개수만큼 작업을 동시에 처리합니다.

스레드 풀은 직접 컨트롤할 수 없지만, 개수는 조절할 수 있습니다.

윈도라면 명령 프롬프트에 SET UV_THREADPOOL_SIZE=1을, 맥과 리눅스라면 터미널에 UV_THREADPOOL_SIZE=1을 입력한 후 다시 node threadpool 명령어를 입력해보세요. 신기하게도 작업이 순서대로 실행될 것입니다. 스레드 풀 개수를 하나로 제한했으므로 작업이 한 번에 하나씩밖에 처리되지 않습니다. SET UV_THREADPOOL_SIZE=숫자와 같은 것은 process.env.UV_THREADPOOL_SIZE를 설정하는 명령어입니다.

스레드의 개수를 8개로 두면 다른 결과가 발생할 것입니다. 다만, 숫자를 크게 할 때는 자신의 컴퓨터 코어 개수와 같거나 그보다 많게 둬야 뚜렷한 효과가 발생합니다.

지금까지 노드로 파일 시스템에 접근하는 방법을 알아봤습니다. 자바스크립트로는 처음 접근해보는 분도 많을 것입니다. 예제를 반복하고 응용도 해보면 곧 익숙해질 것입니다. 다음 절에서는 스트림에서 사용했던 on에 대해 알아보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.