동기(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()
이 실행되는동안, 유저는 아무것도 할 수 없다.
흔히 쓰는 말로 프리징이 걸린다.