Page 19 -
P. 19

> node nextTick.js
                    D:\microservice\nextTick.js:7
                            a.a = 0;  // 예외 발생
                            ^

                    ReferenceError: a is not defined
                        at func (D:\microservice\nextTick.js:7:9)
                        at _combinedTickCallback (internal/process/next_tick.js:71:11)
                        at process._tickCallback (internal/process/next_tick.js:98:9)
                        at Module.runMain (module.js:606:11)
                        at run (bootstrap_node.js:394:7)
                        at startup (bootstrap_node.js:149:9)
                        at bootstrap_node.js:509:3


                   의도적으로 콜백 이후에 예외가 발생하도록 선언되지 않은 변수에 접근하게 했습니다( 3 ). func
                   함수에서는 process.nextTick 함수를 이용해 비동기로 동작하도록 코드를 수정했습니다( 1 ).
                   try~catch 문을 적용했으니 “exception!!”이라는 문자를 화면에 표시해야 합니다( 2 ,  4 ). 하지
                   만 try~catch 문이 실행되지 않고 프로세스 실행 에러가 발생합니다. process.nextTick 함수는
                   비동기 처리를 위해 Node.js 내부의 스레드 풀로 다른 스레드 위에서 콜백 함수를 동작합니다.

                   try~catch 문은 같은 스레드 위에서만 동작하기 때문에 서로 다른 스레드 간의 예외 처리가 불가
                   능합니다. 이처럼 process.nextTick 함수를 이용하면 Node.js가 CPU를 효율적으로 사용하는
                   대신 try~catch 문만으로는 예외 처리가 불가능합니다. 다음 절에서는 Node.js의 싱글 스레드 프

                   로그래밍 개념과 예외 처리 방법을 알아보겠습니다.





                   3.2         싱글 스레드 프로그래밍                           No DE .js Mi C ros E rvi CE s







                   CPU는 한 번에 하나의 명령만 수행할 수 있습니다. 그래서 CPU의 클록 수에 따라 처리 속도가

                   결정됩니다. 이러한 한계를 극복하려고 스레드 개념을 도입했습니다. CPU는 한 번에 하나의 명
                   령만 수행할 수 있지만, 운영체제의 스케줄러가 매우 짧은 주기로 각기 다른 명령을 우선순위에
                   따라 실행시키면 동시에 여러 로직도 수행할 수 있습니다. 이를 멀티스레드 프로그래밍이라고 합

                   니다.




             030




         Microservices_07.indd   30                                                             2018-02-09   오전 11:50:19
   14   15   16   17   18   19   20   21