블로킹 vs 논블로킹

xellos·2022년 5월 1일
0

Process

목록 보기
1/1

들어가기 전에...

Block과 Non-Block, Sync와 Async의 개념을 이해하기 위해서는 다음의 두 개념을 짚고 넘어가야 한다.

  • 제어권
    제어권은 자신(함수)의 코드를 실행할 권리와 비슷하다. 제어권을 가진 함수는 스스로 자신의 코드를 끝까지 실행한 후 이를 호출한 곳에 돌려준다.

  • 결과값을 기다린다는 것
    A함수에서 B함수를 호출했을 때, A함수가 B함수의 결과값을 기다리는가의 여부를 말한다.


Blocking(블로킹)과 Non-Blocking(논블로킹)

블로킹과 논블로킹은 A함수가 B함수를 호출했을 때, 자신의 제어권을 어떻게 하느냐에 따라 달라진다.

1) 블로킹(Blocking)

블로킹은 A함수가 B함수를 호출하면 자신의 제어권을 B함수에 넘겨준다.
1. A함수가 B함수를 호출하면 제어권을 넘긴다.
2. 제어권을 넘겨받은 B는 열심히 역할을 수행한다. A는 자신의 제어권을 B함수에게 넘겨주었기 때문에 실행이 중단된다.
3. B함수는 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려준다.


2) 논블로킹(Non-Blocking)

논블로킹은 A함수가 B함수를 호출해도 제어권을 넘기지않고 본인인 그대로 가진다.

  1. A함수가 B함수를 호출하면, B함수는 실행되지만 A함수의 제어권은 A함수가 그대로 가진다.
  2. A함수는 계속 제어권을 가지고 있기 때문에 함수B를 호출한 이후에도 자신의 코드를 계속 실행한다.

0개의 댓글