[CS] 동기와 비동기, Blocking & Non-blocking

박연주·2023년 5월 16일
0

Computer Science

목록 보기
10/13

동기 / 비동기

동기(Synchronous, 동시에 일어나는)

  • 요청과 동시에 응답을 받는다는 의미, 요청한 자리에서 결과가 주어져야 함
  • 다른 요청은 그동안 대기, 작업 완료 여부를 계속해서 확인
  • 직렬적으로 업무 수행

비동기(Asynchronous, 동시에 일어나지 않는)

  • 요청에 대한 응답이 동시에 일어나지 않음, 응답을 바로 받지 않아도 됨
  • 다른 요청이 와도 바로 수행, 응답 후 처리할 콜백함수를 알려줌 (task 완료시 콜백함수 호출)
  • 병렬적으로 업무 수행 (Web API, Ajax, setTimeout 등)



Blocking / Non-blocking

  • 주로 멀티 스레딩, I/O 등에서 사용되는 개념이며, 함수의 리턴 시점과 제어권에 따라 차이

Blocking

함수 A -> 함수 B 호출

  • 호출된 함수 B가 제어권으로 가지고 있음, A는 B가 완료될 때까지 기다려야 함

Non-blocking

함수 A -> 함수 B 호출

  • 함수 B가 A에게 바로 제어권을 돌려줌. A는 B를 기다리면서도 새로운 작업 수행 가능





Reference

사진1 - https://adrianmejia.com/asynchronous-vs-synchronous-handling-concurrency-in-javascript/

https://sudo-minz.tistory.com/21

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Network/%5BNetwork%5D%20Blocking%2CNon-blocking%20%26%20Synchronous%2CAsynchronous.md

블로킹, 논블로킹 - https://cotak.tistory.com/136

profile
하루에 한 개념씩

0개의 댓글