Page 20 -
P. 20
그림 3-2 스레드 2개를 실행하고 있는 프로세스
프로세스
3
스레드 1 스레드 2 Node.js 이해
시간
멀티스레드 프로그래밍은 대용량 처리에서 필수적으로 사용하는 프로그래밍 방식이지만, 오류를
찾아내기 어렵고 구현할 때 고려할 사항이 많아 그동안 개발자들을 괴롭혀 왔습니다. Node.js는
이러한 복잡한 멀티스레드 대신 싱글 스레드 프로그래밍만으로도 멀티스레드 프로그래밍 성능을
구현하도록 프레임워크가 구성되어 있습니다.
Node.js는 싱글 스레드 기반으로 동작합니다. 여기서 주의할 점은 싱글 스레드라고 해서 모두 같
은 스레드 위에서 동작하지 않는다는 것입니다. 코드 3-2와 같이 비동기 호출을 할 경우 함수를
호출한 영역과 콜백을 처리하는 영역이 각기 다른 스레드 위에서 동작합니다. 이때 try~catch 문
으로 모든 예외 처리를 하기에는 무리가 있습니다. Node.js는 모든 스레드에서 예외 처리를 할
수 있도록 uncaughtException 이벤트를 제공합니다.
코드 3-3은 uncaughtException 이벤트를 이용한 예외 처리입니다.
코드 3-3 uncaughtException 이벤트를 이용한 예외 처리
예제 파일 : uncaughtException.js
function func(callback) {
process.nextTick(callback, "callback/!");
}
try {
func((param) /> {
a.a = 0;
});
} catch (e) {
console.log("exception/!");
031
Microservices_07.indd 31 2018-02-09 오전 11:50:20