Blocking/Non-Blocking & Synchronous/Asynchronous

김민성·2023년 3월 9일
0

Network

목록 보기
9/10

Blocking / Non-Blocking

: 호출된 함수가 호출한 함수에게 제어권을 건네주는 유무의 차이

함수 A,B가 있고, A 안에서 B를 호출

-> B가 호출되면서 B는 자신의 일을 해야함(제어권이 B에게 주어짐)

Blocking : 함수 B는 할 일을 마칠 때까지 제어권 가짐. A는 B가 마칠 때까지 기다림
Non-Blocking : B가 할 일을 마치지 않아도 A에게 제어권을 넘겨줌. A는 B를 기다리면서 다른 일 가능
-> 호출된 함수에서 일을 시작할 때 제어권을 바로 리턴하냐, 할 일을 마치고 리턴하냐의 차이

Synchronous / Asynchronous

: 일을 수행 중인 동시성에 주목

Synchronous : A는 B가 일을 하는 중에 기다리면서, 현재 상태 계속 체크
Asynchronous : B의 수행 상태를 B 혼자 신경쓰면서 처리(Callback)
-> 호출된 함수를 호출한 함수가 신경쓰는지, 호출된 함수 스스로 신경쓰는지의 차이
-> 비동기는 호출 시 Callback을 전달하여 작업의 완료 여부를 호출한 함수에게 알려줌(Callback이 오기 전까지 호출한 함수는 신경쓰지 않고 다른 일을 함)

예시

: 치킨 집에 직접 치킨을 사러 감

Blocking & Synchronous

나 : 사장님 치킨 한마리만 포장해주세요
사장님 : 네 금방되니까 잠시만요!
나 : 넹
-- 사장님 치킨 튀기는 중--
나 : (아 언제 되지?..궁금한데 그냥 멀뚱히 서서 치킨 튀기는거 보면서 기다림)

Blockig : 호출된 함수(사장님)이 일을 마칠 때까지 호출한 함수(나)는 기다림
Synchronous : 호출된 함수(사장님)이 일을 하는 중에 호출한 함수(나)는 치킨 튀기는 거 체크하면서 기다림

Blocking & Asynchronous

나 : 사장님 치킨 한마리만 포장해주세요
사장님 : 네 금방되니까 잠시만요!
나 : 앗 넹
-- 사장님 치킨 튀기는 중--
나 : (언제 되는지 안 궁금함, 잠시만이래서 다 될때까지 서서 붙잡힌 상황)

Blocking : 호출된 함수(사장님)이 일을 마칠 때까지 호출한 함수(나)는 기다림
Asynchronous : 호출된 함수(사장님)의 수행 상태가 안 궁금함, 신경 안 씀

Non-Blocking & Synchronous

나 : 사장님 치킨 한마리만 포장해주세요
사장님 : 네~ 주문 밀려서 시간 좀 걸리니까 볼일 보시다 오세요
나 : 넹
-- 사장님 치킨 튀기는 중--
(5분뒤) 나 : 제꺼 나왔나요?
사장님 : 아직이요
(10분뒤) 나 : 제꺼 나왔나요?
사장님 : 아직이요ㅠ
(15분뒤) 나 : 제꺼 나왔나요?
사장님 : 아직이요ㅠㅠ

Non-Blocking : 호출한 함수(나)는 호출된 함수(사장님)를 기다리면서 다른 일 할 수 있음
Synchronous : 호출한 함수(나)는 호출됨 함수(사장님)의 수행 상태를 계속 체크함

Non-Blocking & Asynchronous

나 : 사장님 치킨 한마리만 포장해주세요
사장님 : 네~ 주문 밀려서 시간 좀 걸리니까 볼일 보시다 오세요
나 : 넹
-- 사장님 치킨 튀기는 중--
나 : (앉아서 다른 일 하는 중)
...
사장님 : 치킨 나왔습니다
나 : 잘먹겠습니다~

Non-Blocking : 호출한 함수(나)는 호출된 함수(사장님)를 기다리면서 다른 일 할 수 있음
Asynchronous : 호출된 함수(사장님)의 수행 상태가 안 궁금함, 신경 안 씀

0개의 댓글