728x90
반응형
동기/비동기 & 블로킹/논블록킹
- 동기/비동기 : 요청한 작업에 대해 완료 여부를 신경 써서 작업을 순차적으로 수행할지 아닌지에 대한 관점
- 블로킹/논블록킹 : 현재 작업이 block(차단, 대기) 되느냐 아니냐에 따라 다른 작업을 수행할 수 있는지에 대한 관점
- 자바스크립트에서 비동기 함수는 비동기 + 논블로킹 함수이다.
동기(Synchronous) / 비동기(Asynchronous)
- 동기 : 요청한 작업의 완료 여부를 따져 순차대로 처리하는 것
- 비동기 : 요청한 작업에 대해 완료 여부를 따지지 않고 자신의 다음 작업을 그대로 수행하는 것
- 성능적 측면
- 비동기에선 기다리지 않고 다른 작업을 처리하면서 동시에 처리하여 멀티 작업을 진행할 수 있기에 성능이 향상됨
- 작업 순서 처리 측면
- 작업을 요청했을 때 응답에서 그 순서가 지켜지면 동기, 지켜지지 않으면 비동기
블로킹(Blocking) / 논블록킹(Non-Blocking)
- 다른 요청의 작업을 처리하기 위해 현재 작업을 block(차단, 대기)유무를 나타내는 프로세스 실행 방식
- 흐름을 막는가 / 안 막는가의 개념
제어권
- 함수의 코드나 프로세스의 실행 흐름을 제어할 수 있는 권리
- Block상태일 때
- A 함수가 B 함수를 호출하면 B에게 제어권 이전
- 제어권을 넘겨받은 B는 함수를 실행
- 이때 A는 B에게 제어권을 넘겨주었기 때문에 A 함수 실행을 잠시 멈춘다. (Block)
- B 함수가 실행이 끝나면 자신을 호출한 A에게 제어권을 반환
- 제어권을 다시 받은 A 함수는 그다음 작업을 실행
- Non-Block상태일 때
- A 함수가 B 함수를 호출
- 호출된 B 함수는 실행되지만, 제어권은 A 함수가 그대로 보유
- A 함수는 계속 제어권을 가지고 있기 때문에 B 함수를 호출한 이후에도 자신의 코드를 계속 실행
반응형
'언어 > Script Question' 카테고리의 다른 글
[…], {…} (0) | 2024.04.07 |
---|---|
$와 _는 무엇인가 (0) | 2024.04.07 |
CallBack & Promise (0) | 2024.04.07 |
Web Storage는 무엇인가 (0) | 2024.03.31 |
IoC / DI가 무엇인가 (0) | 2024.03.31 |