동기, 비동기
동기, 비동기는 코드가 실행되는 방식입니다.
동기
- 코드가 순차적으로 실행 완료됨.
- 이전 코드가 완료될 때까지 오래 걸리는 작업이라면 다음 코드의 실행이 늦춰짐.
- 순차적으로 완료되기 때문에 A-B 순서라면 B가 실행될 때, A가 완료되었다는 것을 믿을 수 있음.
비동기
- 코드의 실행 완료를 기다리지 않고 다음 코드 실행.
- 오래 걸리는 작업이라도 프로그램의 실행 흐름을 멈추지 않음.
- A-B 순서의 코드에 B가 실행될 때 A가 실행 완료가 되었는지 명확하지 않기에 주의해야함.
- 콜백을 사용하여 특정 코드가 실행된 후에 실행되어야하는 코드를 쓸 수 있음.
- 동기 방식에 비해서 프로그램의 흐름을 예측하기 어렵고, 순서 보장을 위해 쓰는 콜백이 중첩되어 콜백 지옥이 생길 수도 있음.
프로세스, 스레드
프로세스
- 메모리 상에 존재하는 프로그램의 인스턴스.
- 운영체제로부터 시스템 자원을 할당받은 작업의 단위.
- 프로세스는 독립된 메모리 공간을 할당받으며, Code, Data, Stack, Heap으로 나뉨.
- 할당받은 자원을 가지고 작업을 수행하는 스레드가 적어도 1개 존재.(메인 스레드)
스레드
- 프로세스 내에서 자원을 사용하는 여러 실행 흐름의 단위.
- 스레드는 Stack을 제외한 메모리 공간을 다른 프로세스와 공유함.