04. Sync/Async, Blocking/Non-Blocking

Blocking/Non-Blocking, Sync/Async

  • 차이

    Blocking/Non-BlockingSync/Async
    A 함수가 B 함수를 실행시켰을 때
    주도권이 어디 있는가
    A 함수가 B 함수를 실행시켰을 때
    B 함수의 결과에 종속되어 처리되는가
  • Blocking/Non-Blocking

    BlockingNon-Blocking
    A함수가 B함수를 실행시키면
    실행 흐름이 B함수로 넘어감
    A 함수가 B 함수를 실행시켰을 때
    B 함수와 별도로 여전히 실행 흐름이 A에게 있음
  • Sync/Async

    SyncAsync
    A함수가 B함수의 결과에 종속적임A 함수가 B 함수의 결과에 비종속적(상관없음)
  • 경우의 수

    경우의 수SyncAsync
    BlockingA함수가 B함수로 넘어가고, return되면
    그제서야 A함수로 실행 흐름이 다시 돌아오고
    A함수에서 바로 return 값을 받아서 처리
    B 결과에 비 종속적이지만
    Blocking이므로 B함수 실행 시 B함수로 제어권이 넘어가, A는 Block됐다가 B가 다 처리되고 return되면
    그제서야 제어권이 넘어와 다시 진행
    Non-BlockingA 함수가 B 함수 실행과 상관없이 계속 주도권을 가지고 있지만
    B의 결과에 종속적이기 때문에
    B의 return 유무를 계속 체크하면서 확인하다가 끝나면 그 값 바로 받아서 진행
    B함수가 실행된 것과 상관없이 주도권을 가지고 있으면서 B의 결과에 비종속적이므로
    B가 return 했는지 확인하지 않고 그냥 다른 거 계속 하다가
    언젠가 return 된 것 확인해서 처리

© 2025. Na2te All rights reserved.