프로세스
- 현재 실행되고 있는 프로그램 단위
- 운영체제에서 할당되는 작업 단위
스레드
- 프로세스 내에서 할당되는 작업의 단위
- 프로세스는 여러개의 스레드를 활성화 할 수 있다.
- 프로세스의 자원을 스레드가 공유하여 사용한다.
싱글 스레드
- 프로세스내에 스레드가 1개 존재하는 것
- 단순히 생각할 때 작업이 순차적으로 진행되어야 할 것 같다.
- A -> B -> C
멀티 스레드
- 프로세스 내에 스레드가 여러개 존재하는 것
- 각 스레드가 작업을 하나이상 씩 처리한다.
- 각 스레드가 같은 데이터에 접근할 경우
동시성
문제가 발생한다.
동시성
2개 이상의 스레드가 한개에 부합하는 데이터에 접근시, 하나의 스레드가 데이터 접근 중 다른 스레드가 데이터를 수정 및 삭제 등 데이터변경시, 데이터의 무결성이 깨지는 문제
자바스크립트 비동기
- 자바스크립트는 싱글 스레드이다.
- 동시에 함수가 2개이상 실행될 수 없어 이를 해결하기 위해 비동기 처리를 이용한다.
nodejs 란
- nodejs를
싱글 스레드 논 블로킹
이라고 한다.
- Node.js는 Google Chrome의 핵심인 V8 JavaScript 엔진을 브라우저 외부에서 실행
nodejs는 이벤트가 발생할 때 미리 지정해 둔 작업을 수행하는 방식
Nods.js는 v8이라는 자바스크립트 엔진과 비동기 작업을 처리하는 libuv 라는 라이브러리로 이뤄져있다.
nodejs는 싱글스레드?
- node자체는 싱글스레드가 아니다.
- 그러나 자바스크립트 자체가 싱글스레드이므로, node를 싱글스레드라 한다.
node 비동기 동작
자바스크립트 엔진은 콜스텍을 위에서 부터 차례대로 실행하기 때문에 비동기처리 불가능
비동기는 libuv 라이브러리 에서 제공하는 이벤트 루프에서 수행된다.
nestjs는 프레임워크다
- nestjs는 nodejs, express 위에서 돌아가는 프레임워크이다.
싱글톤 패턴
- 객체의 인스턴스가 1개만 생성되는 것을 보장하는 패턴
- oop처럼 불필요한 메모리 낭비를 줄 일 수 있다.