비동기

동기적이지 않은 것(asynchronous)을 의미한다.

동기적이라는 건 작업들을 순차적으로 진행함을 의미하는데, 한 작업이 끝나기를 기다려야하는 속성이 있다. 반면에 비동기는 한 작업이 끝나기를 기다리지 않고 다른 작업을 진행하는 것을 말하며, 동기적이지 않은 모든 방식을 의미한다.

비동기 프로그래밍을 가능케하는 조건

  1. non-block IO - 요청을 block하는 작업이 아니기에 I/O를 기다리는 동안 다른 작업을 처리(async, non-block)할 수 있다.
  2. 멀티 스레딩 - 여러 작업을 각 스레드가 나누어 진행하기에 동기적이지 않다. block IO 작업이라도 비동기로 진행할 수 있다 예외
  • async / blocking IO
    • async로 동작하려하지만 제어권이 없기 때문에 메인 플로우를 진행시키지 못한다. sync 와 거의 같은 성능을 낸다.

refs