Sync/Async vs Block/Non-Block

____·2024년 8월 16일
0

[SPRING]

목록 보기
2/4
post-thumbnail

Block vs Non-Block (= 제어권에 초점)

  • Block

    호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 제어권을 리턴하지않는다.
    (호출된 함수가 수행을 마칠동안 블록된다.)

  • Non-Block

    호출된 함수가 자신이 할 일을 마치지 않았더라도 바로 제어권을 리턴하여 호출한 함수가 다른일을 진행할 수 있도록한다.
    (수행을 마치든 아니든 블록되지 않는다.)

| 정리해보면서 블로킹/논블로킹은 제어권을 리턴하느냐와 관련있다고 느낌!

Sync vs Async ( 동기 vs 비동기) (= 작업의 완료에 초점)

  • Synchronous
    Synchronous : 동시적인
    즉, 호출와 종료의 시점이 동시이다.
    [특징]
    1. 호출된 함수의 수행결과 및 종료를
    호출된 함수와 호출한 함수도 함께 신경쓴다.
    → 이말은, Callback개념이 없다. / 폴링으로 계속 완료 확인을 해줘야한다.
  • Asynchronous
    호출과 종료의 시점이 동시가 아니어도 됨.
    즉, 함수종료시점과 무관하게 호출이 가능.
    [특징]
    1. 호출된 함수의 수행결과 및 종료를 호출된 함수에서 알린다.
    → 완료되면 Callback수행해서 완료를 알린다.

관심사의 차이

두 가지 개념의 차이는 관심사 측 어디에 초점을 두느냐의 차이.

동기(Synchronous)와 비동기(Asynchronous)는 작업의 완료에 초점을 두고 있다.

하나의 쓰레드가 다른 쓰레드의 작업 종료일 경우에 작업 시작하면 동기
하나의 쓰레드가 작업이 완료 되던지 말던지 신경쓰지 않고 다른 쓰레드에서 작업 시작을 할 수 있으면 비동기

반면에 블로킹(Blocking)과 논블로킹(NonBlocking)은 호출되는 제어권 리턴되는 시점에 초점을 두고 있다.

호출된 함수가 바로 리턴하지 않고, 제어권을 가지고 있으면서 해당 함수가 종료될 때 제어권을 넘긴다면 블로킹
호출된 함수가 완료되지 않아도 제어권을 바로 호출한 함수에게 넘긴다면 논블로킹

0개의 댓글