async I/O란?

신치우·2023년 2월 4일

Async I/O란?

Asynchronous Input/Output 으로 비동기적 입출력을 의미

비동기적 입출력이란?

프로그램이 입출력 작업을 요청한 후 다른 작업을 수행하는 것
--> 동기적 I/O보다 효율적인 멀티태스킹 가능

Blocking / nonBlocking vs sync / Asycn

blocking 은 함수의 제어권을 누가 갖고 있는가
sync 는 호출된 함수의 순서와 관련

관련 검색어
--> Blocking I/O
:A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이
종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것
(요청을 받은 쪽에서 처리가 끝나고 return을 보내는 것)

--> nonBlocking I/O
:A 함수가 B 함수를 호출 할 때, B 함수가 제어권을
바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것
(요청을 받은 쪽에서 처리가 끝나지 않아도 return 을 보내는 것)

--> sync
:호출한 함수가 순서대로 응답이 오는 것.

--> async
:호출 한 함수가 무작위로 응답이 오는 것.

꼬리질문 list
1. JS는 async는 non blocking인지 blocking인지?

  • non blocking 으로 동작
  • blocking 처럼 동작하게 하는 방법 : await

2. JS에서 sync blocking 은 무엇인지?

  • JS는 본질적으로 single thread, non-blocking 언어
  • async/await, promise 사용해서 sync로 보이게 할 수는 있지만 내부에서는 비동기식으로 실행되고 있음

3. Async-Blocking 일때는 sleep일까 busy waiting일까?

  • JS는 busy-wait도 sleep도 아님 그냥 일시정지 상태로 있고 다른 코드가 실행되도록 함
  • 해당 이벤트가 해결되고 대기 값을 사용할 수 있는 즉시 다시 실행을 재개

ref :
Blocking, Non-blocking, Sync, Async 의 차이
Sync/Async, Blocking/Non-Blocking 무슨 차이일까?

profile
https://shin8037.tistory.com/

0개의 댓글