[NODE] 📚 Worker_Threads 모듈 (멀티 쓰레드 구현)
Inpa Dev 👨💻
결론부터 말하자면 Node.js에는 CPU 집약적인 작업을 향상 시키기 위해 worker thread라는 것이 존재합니다.
Java나 Kotlin 같이 일반적인 서버에선 멀티 스레딩을 통해 동시성 프로그래밍을 지원하기 위해 스레드를 사용하고 있습니다. Node.js는 기본적으로 하나의 이벤트 루프 아래서 하나의 스레드로 JS 소스를 실행시키고 있습니다. (요게 싱글 스레드라고 불리는 이유죠!) 덕분에 Node.js에선 동시성 문제에 대한 고려없이 프로그래밍이 가능했고 이는 복잡성을 떨어뜨리는데도 크게 일조했습니다. 그리고 I/O 작업에선 Node.js가 채택한 Non-blocking I/O with Single Thread는 빠르기도 합니다.
하지만 CPU 집약적인 일을 다릅니다. Node.js가 실행하는 코드에 엄청나게 많은 for문과 반복계산이 있다고 가정해봅시다. 그렇다면 Single Thread인 Node.js에선 해당 for문이 완료될 때까지 기다릴 수 밖에 없습니다. CPU 작업만 별도 스레드에서 실행해 병렬적으로 실행한다면 전체 구문실행이 빨라질 것입니다. 이러한 CPU 집약적인 작업을 도와주기 위해 worker thread 모듈이 등장했는데요! 아래 글을 보시면 어떤 식으로 동작하는지 어느 정도 아실 수 있을 것입니다. Node.js에서 CPU 집약적인 일을 처리하고 최적화를 고민하신다면 좋은 접근법이 될 수 있을 것 같습니다.
참고. https://inpa.tistory.com/entry/NODE-📚-workerthreads-모듈
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 1월 29일 오전 11:19
어제 AI 시대의 개발자 토론회에서 내가 대 AI 시대에는 버전관리 시스템이 필요없을 수도 있다고 생각해야한다는 말을 했는데, 그정도로 파격적인 생각을 해야한다는 이야기긴했지만, 진짜 그럴까?를 다시 한 번 생각해봤다.
우선 버전관리 시스템의 목적은 크게 다음 세 가지다.
코
... 더 보기좋
... 더 보기큰 것을 하는 것보다 매일 작은 것을 완벽하게 해내는 노력이 더 중요하다. 내가 성격 장애의 하나인 자기애성 성격장애자(NPD, Narcissistic Personality Disorder)를 만나면서 느낀 것은, 처음에는 그런 사람도 "정상인"처럼 느껴진다는 것이었다. 다만 그의 미친짓은 내가 매일매일 "사소한" 사건들로 상대방에게 익숙해졌을 때 발생한다.
매
... 더 보기스트레스를 잘 관리하면서 건강하게 살아가고 싶다면, 우선 살아있는 한 우리가 해야 할 일들은 영원히 없어지지 않을 것이므로, 해야 할 일을 100% 해내면서 할 일 목록을 완전히 없애는 데 많은 노력을 들이기보다는 70% 정도만 해내도 만족할 필요가 있다.
... 더 보기