TIL

TIL 30일차

리액트바오 2021. 10. 15. 23:55

비동기에 대해 공부했다. 그냥 이런저런 말 다 아끼고 공부시간을 늘려야겠다. 비동기 과제를 페어와 함께 진행하여 오늘 끝이 났는데 다시한번 공부해봐야하는 상황이다. 

 

하나의 작업이 끝날 때까지, 이어지는 작업을 "막는 것"을 blocking 이라고 부른다. 그리고 이렇게 시작 시점과 완료 시점이 같은 상황을 "동기적(synchronous)이다." 라고 한다. 그런데 시작 시점과 완료 시점이 같지 않게 비동기적으로 작동되어야 효율적인 작업도 있다. 특히 백그라운드 실행, 로딩 창 등의 작업, 인터넷에서 서버로 요청을 보내고 응답을 기다리는 작업, 큰 용량의 파일을 로딩하는 작업은 더 그렇다.

비동기 흐름은 callback, promise, async/await 중 하나의 문법을 이용하여 구현할 수 있다.

 

동기와 blocking이 비슷하고, 비동기와 non-blocking이 비슷해보여 같다고 생각했는데 다르다고 한다. 이 차이점만을 정리한 내용과 유튜브 영상들이 꽤 있는걸 보니 따로 정리해보고 알아보아야할 내용이란걸 알 수 있다.

 

blocking / non-blocking

호출되는 함수가 바로 return을 하는지 안하는지의 여부를 나타낸다.

호출한 함수가 호출되는동안 다른 일을 할 수 있는 기회를 줄 수 있으면 non-blocking이다.

호출된 함수의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 기다리게 한다면 blocking이다.

 

synchronous / asynchronous

호출되는 함수의 작업 완료 여부를 호출한 함수가 직접 확인하는지의 여부를 말한다

호출한 함수가 작업 완료 여부를 신경쓰지 않는다면 비동기이다.

작업 완료 여부를 호출한 함수가 스스로 확인하며 신경 쓴다면 동기이다.

 

 

Today's Key🔑

  • blocking, non-blocking은 호출되는 함수가 바로 return을 하는지 안하는지의 여부를 나타낸다.
  • synchronous,asynchronous는 호출되는 함수의 작업 완료 여부를 호출한 함수가 직접 확인하는지의 여부를 말한다.
  • 비동기 흐름은 callback, promise, async/await 중 하나의 문법을 이용하여 구현할 수 있다.