250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

동기(Synchronous)vs비동기(Asynchronous), 블로킹(Blocking)vs논블로킹(Non-blocking) 본문

[Snow-ball]프로그래밍(컴퓨터)/프로그래밍 및 컴퓨터 개론 이론

동기(Synchronous)vs비동기(Asynchronous), 블로킹(Blocking)vs논블로킹(Non-blocking)

Snow-ball 2022. 6. 6. 22:47
반응형

동기vs비동기와 블로킹vs논블로킹은 같은 의미인가?

동기와 비동기는 프로세스의 수행 순서 보장에 대한 매커니즘이고, 블로킹과 논블로킹은 프로세스의 유휴 상태에 대한 개념이다.

 

블로킹과 논블로킹, 동기와 비동기의 개념을 이해하기 위해서는 두가지 용어를 알아야 한다.

- 제어권 : 제어권은 자신(함수)의 코드를 실행할 권리 같은 것이다. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다.

- 결과값을 기다린다는 것 : A함수에서 B함수를 호출했을 때, A함수가 B함수의 결과값을 기다리느냐의 여부를 의미한다.

 

 

 

 


 

 

Blocking(블로킹)과 Non-Blocking(논블로킹)

 

블로킹(Blocking)과 논블로킹(Non-Blocking)은 다른 작업을 수행하는 주체를 어떻게 상대하는지가 중요하다. 자신의 작업을 하다가 다른 작업 주체가 하는 작업의 시작부터 끝까지 기다렸다가 다시 자신의 작업을 시작한다면 이는 블로킹이고, 다른 주체의 작업과 관계없이 자신의 작업을 계속한다면 이를 논블로킹이라고 할 수 있다.

 

 

 

- 블로킹

블로킹은 A함수가 B함수를 호출하면, 제어권을 A가 호출한 B함수에 넘겨준다.

 

1. A함수가 B함수를 호출하면 B에게 제어권을 넘긴다.

2. 제어권을 넘겨받은 B는 함수를 실행한다. A는 B에게 제어권을 넘겨주었기 때문에 함수 실행을 잠시 멈춘다.

3. B함수는 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려준다.

 

 

 

 

 

 

- 논블로킹

논블로킹은 A함수가 B함수를 호출해도 제어권은 그대로 자신이 가지고 있는다.

 

1. A함수가 B함수를 호출하면, B함수는 실행되지만, 제어권은 A함수가 그대로 가지고 있는다.

2. A함수는 계속 제어권을 가지고 있기 때문에 B함수를 호출한 이후에도 자신의 코드를 계속 실행한다.

 

 

 

 

 

 


 

 

 

Synchronous(동기)와 Asynchronous(비동기)

동기와 비동기의 차이는 호출되는 함수의 작업 완료 여부를 신경쓰는지의 여부의 차이이다.

 

동기 작업(Synchronous)이란 작업을 수행하는 두 개 이상의 주체가 서로 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작할 때를 의미한다. 시작과 종료를 동시에 하거나, 하나의 작업이 끝나는 동시에 다른 주체가 작업을 시작하면 이는 동기 작업이라고 볼 수 있다.

비동기 작업(Asyncronous)은 두 주체가 서로의 시작, 종료시간과는 관계 없이 별도의 수행 시작/종료 시간을 가지고 있을 때를 뜻한다. 서로 다른 주체가 하는 작업이 자신의 작업 시작, 종료시간과는 관계가 없을 때 비동기라고 부를 수 있다.

즉,블로킹과 논블로킹은 A함수가 B함수를 호출했을 때, 제어권을 어떻게 처리하느냐에 따라 달라진다.

 

 

 

 

- 동기

함수 A가 함수 B를 호출한 뒤, 함수 B의 리턴값을 계속 확인하면서 신경쓰는 것이 동기이다.

 

- 비동기

함수 A가 함수 B를 호출할 때 콜백 함수를 함께 전달해서, 함수 B의 작업이 완료되면 함께 보낸 콜백 함수를 실행한다. 

함수 A는 함수 B를 호출한 후로 함수 B의 작업 완료 여부에는 신경쓰지 않는다.

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

베타존 : 네이버쇼핑 스마트스토어

나를 꾸미다 - 인테리어소품 베타존

smartstore.naver.com

 

반응형
Comments