이벤트 루프와 비동기 통신의 이해
동기(synchronous)
직렬 방식으로 작업을 처리하는 것. 이전 요청의 응담을 받은 이후에야 비로소 다른 작업을 처리할 수 있다. 그동안 다른 모든 작업은 대기한다.
이 덕분에 코드의 실행 결과를 따라가기 매우 편리해지지만, 한번에 많은 작업을 처리할 수 없다.
비동기(asynchronous)
병렬 방식으로 작업을 처리하는 것
응답을 받은 여부와 상관 없이 다음 작업이 이루어지는 것. 한번에 많은 작업을 처리할 수 있다.
js는 싱글 스레드의 동기 방식으로 작동한다.
1. 싱글 스레드 자바스크립트
프로세스
- 프로그램을 구동해 프로그램의 상태가 메모리상에서 실행되는 작업 단위
- 하나의 프로그램 실행은 하나의 프로세스를 가지고, 그 프로세스 내부에서 모든 작업이 처리되는 것을 의미
- 프로그램이 점점 복잡해지면서 하나의 프로세스로는 관리하기 힘들어지며, 스레드가 등장
스레드(thread)
- 하나의 프로세스에 여러 개의 스레드를 만들 수 있다.
- 스레드 끼리는 메모리를 공유할 수 있어 여러 작업을 동시에 수행할 수 있다.