아직은 정체성이 없는 블로그

동기(Synchronous)와 비동기(Asynchronous) / 블로킹(Blocking)과 논블로킹(non-blocking) 본문

개발지식

동기(Synchronous)와 비동기(Asynchronous) / 블로킹(Blocking)과 논블로킹(non-blocking)

coooding 2020. 8. 28. 19:44

동기(Synchronous)와 비동기(Asynchronous) / 블로킹(Blocking)과 논블로킹(non-blocking)

 

여러 책이나 영상을 통해 공부를 하다 동기와 비동기, 블로킹과 논블로킹이라는 단어를 많이 들어보았으나 그 둘의 차이를 정확히 이해하지 못하여서 정리를 해보았습니다.

 

블로킹(Blocking)과 논블로킹(non-blocking)

Blocking

호출된 함수가 자신의 작업을 모두 끝낼때까지 제어권을 가지고 있어 호출한 함수가 대기하도록 만듭니다.

Non-Blocking

호출된 함수가 바로 return 해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게합니다.

간단히 정리하자면 호출되는 함수가 바로 리턴하는지 아닌지가 중요 포인트입니다.

 

 

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

동기(Synchronous)

동기는 요청을 보낸 후 return을 받아야 다음 동작이 이루어지는 방식입니다.

어떠한 일을 처리할 동안 다른 프로그램은 정지합니다.

 

비동기(Asynchronous) 

비동기는 요청을 보낸 후 return과는 상관없이 다음 동작이 동작하는 방식입니다.

결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있습니다.

 

 

 

예시

 

타블로그에서 동기(Synchronous)와 비동기(Asynchronous) , 블로킹(Blocking)과 논블로킹(non-blocking)에 개념에 대한  예시를 재미있고 쉽게 설명해주어서 예시를 가져와봤습니다.

(https://musma.github.io/2019/04/17/blocking-and-synchronous.html)

 

Blocking & Synchronous

나 : 대표님, 개발자 좀 더 뽑아주세요..
대표님 : 오케이, 잠깐만 거기 계세요!
나 : …?!!
대표님 : (채용 공고 등록.. 지원자 연락.. 면접 진행.. 연봉 협상..)
나 : (과정 지켜봄.. 궁금함.. 어차피 내 일 하러는 못 가고 계속 서 있음)

Blocking & Asynchronous

나 : 대표님, 개발자 좀 더 뽑아주세요..
대표님 : 오케이, 잠깐만 거기 계세요!
나 : …?!!
대표님 : (채용 공고 등록.. 지원자 연락.. 면접 진행.. 연봉 협상..)
나 : (안 궁금함.. 지나가는 말로 여쭈었는데 붙잡혀버림.. 딴 생각.. 못 가고 계속 서 있음)

Non-blocking & Synchronous

나 : 대표님, 개발자 좀 더 뽑아주세요..
대표님 : 알겠습니다. 가서 볼 일 보세요.
나 : 넵!
대표님 : (채용 공고 등록.. 지원자 연락.. 면접 진행.. 연봉 협상..)
나 : 채용하셨나요?
대표님 : 아직요.
나 : 채용하셨나요?
대표님 : 아직요.
나 : 채용하셨나요?
대표님 : 아직요~!!!!!!

Non-blocking & Asynchronous

나 : 대표님, 개발자 좀 더 뽑아주세요..
대표님 : 알겠습니다. 가서 볼 일 보세요.
나 : 넵!
대표님 : (채용 공고 등록.. 지원자 연락.. 면접 진행.. 연봉 협상..)
나 : (열일중..)
대표님 : 한 분 모시기로 했습니다~!
나 : 😍

 

 

 

Comments