new Worker를 호출할 때 두 번째 인수의 workerData 속성으로 원하는 데이터를 보낼 수 있습니다. 워커에서는 workerData로 부모로부터 데이터를 받습니다. 현재 두 개의 워커가 돌아가고 있으며, 각각 부모로부터 숫자를 받아서 100을 더해 돌려줍니다. 돌려주는 순간 워커가 종료되어 worker.on('exit')이 실행됩니다. 워커 두 개가 모두 종료되면 job done이 로깅됩니다.
콘솔
$ node worker_data
from worker 101
from worker 102
job done
실행할 때마다 101과 102의 순서가 달라질 수 있습니다. 두 개의 워커는 거의 동시에 실행되므로 먼저 끝나는 워커의 결과가 콘솔에 먼저 표시됩니다.
이번에는 좀 더 실전적인 예제로 소수의 개수를 구하는 작업을 워커 스레드를 통해 해보겠습니다. 소수를 찾는 작업은 연산이 많이 들어가는 대표적인 작업입니다.
먼저 워커 스레드를 사용하지 않은 예제입니다.