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

namkun·2023년 6월 1일
0

T-I-L

목록 보기
9/20

동기 vs 비동기

프로세스 수행 순서 보장에 대한 메커니즘을 말한다.
작업을 어떤 흐름으로 처리할지에 대한 관점이라고 생각하면 편할 듯 하다.

동기 (synchronous)

  • 동기 처리 방식은 요청된 작업에 대해서 완료 여부를 따져서 순차적으로 실행하는 것을 말한다.
  • 아이스크림을 주문하면 다음 사람은 앞선 사람의 아이스크림이 나올 때까지 주문을 하지 못하는 상황을 생각하면 된다.

비동기 (Asynchronous)

  • 요청된 작업에 대해 완료 여부를 따지지 않고 실행하는 것을 말한다.
  • 카페에서 주문하고 진동벨받고, 그 다음 손님은 주문하고 또 진동벨 받고... 완료된 주문은 진동벨로 알림을 받는 걸 생각하면 된다.

블로킹 vs 논 블로킹

처리해야하는 작업이 전체적인 작업 흐름을 막는지에 대한 관점이라고 생각하면 된다.

블로킹 (blocking)

  • 자신의 작업을 진행하다가, 다른 주체의 작업이 시작되면 이전에 진행되던 본인의 작업은 멈추고 해당 작업을 기다렸다가 진행한다.

논 블로킹 (non-blocking)

  • 다른 주체가 작업을 시작하건 말건 내 할 일을 그대로 진행한다.

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

위의 두 개념을 서로 합쳐서 프로세스를 어떻게 진행할지에 대해서 비교해 볼 수 있는데 그림을 보고 이해해보도록 하자.

동기 블로킹

  • A는 B의 리턴값이 필요한 프로세스이고 (동기),
  • 기다렸다가 리턴값이 오면 진행한다. (블로킹)

동기 논블로킹

  • A프로세스는 계속 B를 호출하며 진행된다. (논블로킹)
  • A는 B의 리턴값이 필요하기에 계속 호출한다.(동기)

비동기 블로킹

  • A 프로세스는 B 호출과 동시에 콜백 함수도 같이 준다.
  • B의 간섭이 없음에도, A는 진행하지 않는다. (블로킹)
  • B 프로세스가 다 끝나면 처음에 줬던 콜백 함수를 호출한다. (비동기)

비동기 논블로킹

  • A 프로세스는 B 를 호출함과 동시에 콜백 함수도 같이 준다.
  • A 프로세스는 계속 진행한다. (논블로킹)
  • B 프로세스가 끝나면 콜백함수를 호출한다. (비동기)
profile
개발하는 중국학과 사람

0개의 댓글