Page 19 -
P. 19

그림 1-7 이벤트 루프 2
                                      호출 스택                     백그라운드
                                                                                                      1
                     4. 호출 스택 실행이
                        끝나 비워지면                                                                       노드 시작하기




                         5. 이벤트 루프가
                            태스크 큐의 콜백을
                            호출 스택으로 올림
                                            run                  태스크 큐



                    그림 1-8은 이벤트 루프가 run 콜백을 태스크 큐에서 꺼내 호출 스택으로 올린 상황입니다. 호출
                    스택으로 올려진 run은 실행되고, 실행 완료 후 호출 스택에서 비워집니다. 이벤트 루프는 태스크
                    큐에 콜백 함수가 들어올 때까지 계속 대기합니다.


                       그림 1-8 이벤트 루프 3
                                     호출 스택                     백그라운드


                     6. run이 호출 스택에서
                        실행되고 비워짐

                                      run()

                        7. 이벤트 루프는
                           태스크 큐에 콜백이
                           들어올 때까지 대기
                                                                태스크 큐


                    만약 호출 스택에 함수들이 너무 많이 들어 있으면 3초가 지난 후에도 run 함수가 실행되지 않을

                    수 있습니다. 이벤트 루프는 호출 스택이 비어 있을 때만 태스크 큐에 있는 run 함수를 호출 스택
                    으로 가져오니까요. 이것이 setTimeout의 시간이 정확하지 않을 수도 있는 이유입니다.




                    1.1.4 논 블로킹 I/O


                    이벤트 루프를 잘 활용하면 오래 걸리는 작업을 효율적으로 처리할 수 있습니다. 작업에는 두 가

                    지 종류가 있는데, 동시에 실행될 수 있는 작업과 동시에 실행될 수 없는 작업입니다. 기본적으로

                                                                                                  31





     node_06.indd   31                                                                      2020-07-14   오전 11:01:52
   14   15   16   17   18   19   20   21   22   23   24