본문 바로가기

면접/cs

동기 vs 블로킹, 비동기 vs 논블로킹

  1. 동기 vs 블로킹, 비동기 vs 논블로킹 의 각각 차이점은?(async, async, blocking, non-blocking)

Q. 성능의 차이를 어떻게 ? 알수있나? 

 

/*

 

제어권: 제어권은 자신(함수)의 코드를 실행할 권리 같은 것이다. 

제어권을 가진 함수는 잣니의 코드를 끝까지 실행한후, 자신을 호출한 함수에게 돌려준다. 

 

결과값을 기다린다

a함수에서 b함수를 호출했을때, a함수가 b함수의 결과값을 기다리느냐의 여부

 

*/

 

1)블로킹

a함수가 b함수를 호출하면, a함수가 b함수에게 제어권을 넘겨주고 결과값을 기다린다

b는 함수를 실행하고(제어권) 자신에게 호출한 함수에게 돌려주며 제어권도 다시 넘긴다

 

 


2) 논블로킹

a함수가 b함수를 호출해도 제어권은 자신이 그대로 가지고 있는다

b는 함수를 실행하고 a도 계속 실행함

 

 

동기와 비동기의 차이는 호출되는 함수의 작업 완료 여부를 신경쓰는지의 여부 차이이다.

 

3) 동기 

a함수가 b함수를 호출한 뒤, 함수  b의 리턴값을 계속 확인하면서 신경쓰는 것이 동기이다.

 

4) 비동기

a함수가 b를 호출할때 콜백함수를 함께 전달해서, b의 작업이 완료되면 함께보낸 콜백함수를 실행한다

(b에게 책임을 다 줘버림)함수 a는 함수 b를 호출한 후로 함수 b의 작업완료 여부에는 신경쓰지 않는다.

 

 

동기를 블로킹처럼 실행하는 것은 이해하기 쉽지만

동기vs블로킹/ 비동기vs논블로킹 차이가 있다.!

 

 

sync-blocking

(리턴값을 신경씀) (제어권을 넘겨주고 기다렸다가 넘겨받음)

sync-nonblocking

(리턴값을 계속 신경쓰면서 자기도 진행함(제어권은 주지않음))

 

async-nonblocking 이것도 납득하기 쉬움

(리턴값을 신경쓰지 않으며 콜백함수 자체로 책임을 넘겨버림) (제어권을 넘기지않고 호출하고 자기일을함)

 

 

async-blocking

이건 잘 없다고 한다

 

 

 

'면접 > cs' 카테고리의 다른 글

동시성처리  (0) 2022.02.12
쓰레드, 멀티쓰레드  (0) 2022.02.12
브라우저와 스크립트 엔진  (0) 2022.02.12
주절주절 IT  (0) 2022.02.12
[cs]url, base64인코딩 디코딩  (0) 2022.02.03