티스토리 뷰

 

 

 

블록, 논블록, 싱크, 어싱크의 차이 

 

용어 정리

- 호출한 함수: 최초에 호출한 함수

- 호출된 함수: 호출한 함수에 의해 호출된 함수

- 제어권 : 제어권은 자신(함수)의 코드를 실행할 권리 

 

 

 

블록/논블록 차이

호출된 함수가 자신이 할 일이 끝날때 까지 제어권을 계속 가지고서

호출한 함수에게 바로 돌려주지 않으면 Block

 


호출된 함수가 자신의 일을 끝내지 않았더라도 바로 제어권을 넘겨

호출한 함수가 다른 일을 진행할 수 있도록 해주면 Non-block

 

 

 

Sync, Async 차이

호출된 함수의 수행 결과 및 종료를

호출한 함수가 신경 쓰면 Synchronous

 

 

호출된 함수의 수행 결과 및 종료를 

호출된 함수 혼자 직접 신경 쓰고 처리한다면 Asynchronous

 

 

 

예시

아래의 설명에서는

호출한 함수를 A, 

호출된 함수를 B라고 칭한다.

 

 

 

 

Non-blocking & Synchronous

A는 B에게 일을 시킨다.

B는 A에게 바로 제어권을 넘긴다. (논블럭)

 

 

B는 일을 시작하는데,

A는 자신의 일을 하지 않는다.

 

 

A의 하는 일이란

그저 B가 하는일을 확인하는 것이다.

 

 

A는 그저 B를 염탐할 뿐이다.

A는 B의 수행 결과가 끝나는 것을 신경써야 한다. (동기)

 

 

 

blocking &  Synchronous

A가 실행되다가

B라는 일을 수행하는 함수를 호출해서 B를 시작한다.

 

 

A는 B의 일을 시작시키고

제어권을 받지 못한다 (블로킹)

 

 

B는 일이 끝나면 함수를 리턴한다. 

B라는 함수의 수행 및 결과를 받고 나서야 (동기)

A가 제어권을 받고 일을 한다.

 

 

 

blocking & Asynchronous

A는 B에게 일을 시킨다.

 

 

B는 일을 시작하고,

A도 자신의 일을 하기는 한다.

 

 

다만, A는 중간에 B라는 일이 하는 중간 결과를 보고 받아서 처리해야한다.

A에게는 제어권이 없기 때문이다. (블로킹)

 

 

A는 B에게 요청을 해서 중간 결과를 기다린다. 

중간에 B에게 요청의 결과를 받고, A는 자신의 일을 처리한다.

 

 

동시에 B 는 또 자신의 일을 한다.

A는 B 함수의 수행 결과 및 종료를 신경쓰지는 않는다.  (비동기)

 

 

 

Non-blocking & Asynchronous

A는 B의 일을 시작시키고 바로 제어권을 받는다. (논 블록킹)

A 와 B는 각자 자신의 일을 한다 (비동기) 




참고자료

 

인파 블로그:  https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%EB%8F%99%EA%B8%B0%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%A1%9C%ED%82%B9%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함