[CS] Blocking vs. Non-Blocking 과 Async vs. sync

Kim Hyen Su·2024년 3월 30일

👾 CS

목록 보기
3/5
post-thumbnail

프로젝트를 진행하면서 서버 간의 I/O 통신 시 자주 언급되는 개념이 동기 vs. 비동기, Blocking vs. Non-Blocking 입니다.

간단히 설명하면, 동기와 비동기의 차이는 반환되는 값이 필요한지 아닌지로 구분됩니다.

그 다음으로 Blocking과 Non-Blocking은 함수 제어권이 호출된 함수로 넘어갔는지 아닌지로 구분됩니다.

  • 동기-블로킹
    다른 함수를 호출했을 때, 해당 함수의 반환값이 필요하며, 다른 함수의 로직이 끝날때까지 자신의 로직을 수행하지 않는것을 말합니다.

  • 동기 - 논블로킹
    다른 함수를 호출했을 때, 해당 함수의 반환값이 필요하며, 다른 함수의 로직이 끝날때까지 기다리지 않고 자신의 코드를 계속 실행합니다.

  • 비동기 - 블로킹
    다른 함수를 호출 시 콜백함수를 보내줍니다. 그리고 기존의 함수는 자신의 로직을 수행합니다.

  • 비동기 - 논블로킹
    다른 함수를 호출 시 콜백함수를 보내줍니다. 하지만, 기존의 함수는 다른 함수가 끝날때까지 제어권을 기다립니다.

profile
백엔드 서버 엔지니어

0개의 댓글