동기(synchronous) - 비동기(asynchronous)
블로킹(blocking) - 논 블로킹(non-blocking)
헷갈리는 단골 주제다. 블로그에 쓰여있는 글들을 볼때 혼용하기도 하고
특히 JS는 동기 작업을 비동기로 처리해야해서 용어 사용이 잦다.
작업1이 끝나야 작업2가 실행되는 형식작업1이 실행되는 동안 작업2가 실행되는 형식.작업1이 끝나면 결과를 받아올 수 있다.여기까지는 정리했는데, 동기-블로킹간의 차이를 잘 모르겠다.
9월26일 화요일에 멘토님이 알려주시고나서 수정하겠음!
멘토님이 답변을 해주셨다. 그대로 첨부할 수 없지만, 이해를 바탕으로 작성
우리의 언어(JS)는 동기적으로 작동한다. 비동기적으로 작동하는 프로그래밍언어가 얼마냐 있느냐마는...
간단한 예시로 보자
const name = "kim"
const greeting = `Hello, my name is ${name}!`;
console.log(greeting); // Hello, my name is kim
name이라는 문자열 선언greeting에 문자열과 name조합해서 할당...d이렇게 순서대로 작동한다.
각 라인은 이전 라인에 의존하니, 당연한 결과다. 선언하지 않은 변수를 사용할 수 없고, 기타 등등.
동기적 프로그래밍은 지켜져야만 한다.
어떠한 예외상황을 제외하고 말이다
10초가 소요되는 함수가 있다고 가정해보자. stupidFunc().
이 stupidFunc()이 실행되는동안, 유저는 아무것도 할 수 없다.
흔히 쓰는 말로 프리징이 걸린다.