인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
개발 · 프로그래밍

/

개발 · 프로그래밍 기타

[그림으로이해하는] 동기(sync) 비동기(async)의 개념에 대한 가장 직관적인 이해

아주 쉽게 동기 비동기의 개념을 이해할 수 있는 19분정도의 강의입니다.

(4.9) 수강평 164개

수강생 2,421명

Thumbnail
새소식 목록
관리
작성

추가적인 Blocking / Non-Blocking의 개념에 대해서

안녕하세요! 앨런입니다.

제가 짧게 강의를 만들어 보았었는데, 많은 도움 되셨었나 모르겠네요! 그래도 도움이 많이 되었다고 좋은 수강평들을 남겨주신 분들이 많아서, 수업을 만들어 보길 잘했다고 많이 느끼고 있습니다. ^^

다름이 아니오라, 가끔씩 동기 비동기 개념이외에,

Blocking / Non-Blocking의 개념은 뭔가요? 이런 질문들이 올라와서.. 혹시나 참고해 보실 분들이 있으시다면, 도움이 될 것 같아 내용을 남겨드립니다.

제가 수업 내용을 통해서 말씀드린 동기 / 비동기 개념을 먼저 익히시는 것이 당연히 우선이라고 생각이 들고요. 언어에 따라서는 Blocking / Non-Blocking 개념이 쓰이지 않는 언어들도 있기 때문에, 이 부분들은 공부하시는 언어에 해당 내용이 존재하는 개념인지를 먼저 살펴 보셔야 할 것 같습니다. ^^

네, 어쨌든 Blocking / Non-Blocking 개념이 쓰이는 언어라면 아래 내용을 참고해 보시면 좋을 것 같고요,


▶︎ Blocking / Non-Blocking
은 호출되는 함수가 바로 리턴하느냐 마느냐가 중요한 개념

  1) Blocking - 즉시 리턴하지 않음 (일을 못하게 막음)

  2) Non-Blocking - 즉시 리턴



▶︎ 동기 / 비동기는 작업완료여부를 호출한 함수가 신경쓸 것인지, 호출된 함수(callback)가 신경쓸 것인지

  1) 동기 - 호출한 함수가 작업완료 신경씀

  2) 비동기 - 호출된 함수(callback함수)가 작업완료 신경씀


( 다만 이런 개념이 합쳐서 Blocking & Async는 어차피 다른 일을 못하니 일부러 사용하는 경우는 없다고 합니다.)



그리고 일반적으로  Blocking / Non-Blocking 개념이 쓰이지 않는 언어들에서는 제가 수업에서 말씀드린 것처럼


동기는 Blocking과 결합된 개념으로, 비동기는 Non-Blocking과 결합된 개념으로 생각하시면 편합니다.

그리고 혹시 다른 분이 글로 아주 잘 써놓으신 자료가 있어 링크도 달아드립니다.^^

https://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/

https://siyoon210.tistory.com/147


고맙습니다. :)

댓글