[용어 정리] blocking/nonblocking, Synchronous/Asynchronous

[용어 정리] blocking/nonblocking, Synchronous/Asynchronous


Blocking 

  • 호출된 함수가 자신의 작업을 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만드는 것

NonBlocking

  • 호출된 함수가 바로 return해서 호출한 함수에게 제어권을 넘겨주고, 호출한 함수가 다른 일을 할 수 있는 기회를 줄 수 있는 것

Synchronous

  • 호출되는 함수에게 callback을 전달해서, 호출되는 함수의 작업이 완료되면 호출되는 함수가 전달받은 callback을 실행하고, 호출하는 함수는 작업 완료 여부를 신경쓰지 않음

Asynchronous

  • 호출하는 함수가 호출되는 함수의 작업 완료 후 리턴을 기다리거나, 또는 호출되는 함수로부터 바로 리턴 받더라도 작업 완료 여부를 호출하는 함수 스스로 계속 확인

정리

  • Blocking/NonBlocking은 호출되는 함수가 바로 리턴하느냐 마느냐가 관심사
    • 바로 리턴하지 않으면 Blocking
    • 바로 리턴하면 NonBlocking
  • Synchronous/Asynchronous는 호출되는 함수의 작업 완료 여부를 누가 신경쓰냐가 관심사
    • 함수의 작업 완료를 호출한 함수가 신경쓰면 Synchronous
    • 함수의 작업 완료를 호출된 함수가 신경쓰면 Asynchronous
  • 성능상 가장 유리한 모델은 Async-NonBlocking 모델

출처

댓글

이 블로그의 인기 게시물

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[운영체제] 파일의 구조(순차 파일, 직접 파일, 색인 순차 파일)

[운영체제] MLQ & MFQ