반응형
프로그래밍 언어에서
동기적(Synchronous)
비동기적(Asynchronous)의
차이점은 다음과 같다
동기적(Synchronous)
- 특정 코드를 수행 완료한 이후 아래줄의 코드 수행
비동기적(Asynchronous)
- 특정 코드를 수행하는 도중에도 아래로 계속 내려가며 수행함
예제를 통해 보자면 아래와 같다
// Example 1 - Synchronous (blocks)
var result = database.query("SELECT * FROM hugetable");
console.log("Query finished");
console.log("Next line");
// Example 2 - Asynchronous (doesn't block)
database.query("SELECT * FROM hugetable", function(result) {
console.log("Query finished");
});
console.log("Next line");
먼저 동기적일 경우에는
하나를 수행한 후에 아래로 내려가기 때문에
Query finished 후에 Next Line이 나오게 되지만
위 코드가 오래 걸린다면
아래 코드도 모두 대기해야 하므로
비동기적일 경우에 비해 속도가 느리다
하지만 진행방향이 일방향이기 때문에
코드에서 에러가 나더라도 어디에서 에러가 났는지
쉽게 파악할 수 있다
하단의 비동기적일 경우에는
특정 코드를 완료하지 않아도
바로 밑으로 내려가며 다른 코드들을 수행하기 때문에
훨씬 속도가 빠르다
다만 select가 얼마나 빨리 끝나느냐에 따라
Query finished와 Next line 중
어느것이 먼저 나올지 예측할 수 없는 것처럼
여러 군데에서 동시에 코드가 수행되기 때문에
진행방향을 예상하기 힘들다
마지막으로 동기적, 비동기적 언어로는 뭐가 있나요 하면
딱히 고민을 할 필요가 없다
동기적이기만 한 언어는 아래와 같은데
Argos
Atom
Averest
ChucK
Esterel
LabVIEW
LEA
Lustre
PLEXIL
SIGNAL
SOL
SyncCharts
보면 알겠지만 실전에서 사용할 일이 없는 언어들이다
반면 비동기적인 언어는
자바, C++, 파이썬, 자바스크립트 등
대부분의 언어들인데
해봤는데 동시에 수행 안되던데?
싶으면 쓰레드 개념 등을 통해
동시에 수행하는 방법을 적용하지 않아서 그럴 것이다
반응형
'기타 개념정리' 카테고리의 다른 글
데드락 개념부터 예제, 해결방법까지 (0) | 2020.04.23 |
---|---|
세션 쿠키 개념부터 차이까지 (0) | 2020.04.21 |
MSSQL WITH (NOLOCK) 개념 및 사용방법 (0) | 2020.03.30 |
스네이크 케이스 표기법 및 예제 (0) | 2020.03.17 |
카멜케이스 표기법 사용법 및 예제 (0) | 2020.03.17 |
댓글