[ CS / OS ] Synchronous & Asynchronous

황승환·2022년 2월 14일
0

CS

목록 보기
31/60

Synchronous & Asynchronous


일반적으로 동기와 비동기의 차이는 메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기라고 표현하고, 그렇지 않은 경우를 비동기라고 표현한다.

Synchronous

메소드를 실행시킴과 동시에 반환 값을 기대한다는 의미는 실행되었을 때 값이 반환되기 전까지 blocking되어 있는다는 의미이다.

  • 요청 이후 응답을 받아야만 다음 동작이 이루어진다.
  • 어떠한 작업을 처리하는 동안 다른 작업은 정지한다.
  • 실제 CPU가 느려지는 것은 아니지만 전체적인 시스템 효율은 저하될 수 있다.

이는 해야할 일로 비유할 수 있다. 만약 빨래, 설거지, 청소를 해야 한다면 동기는 빨래를 먼저 끝낸 뒤에 설거지를 하고, 그 뒤에 청소를 하게 된다.

장점

  • 설계가 간단하고 직관적이다.

단점

  • 결과가 주어질 때까지 아무것도 못하고 대기해야 한다.

Asynchronous

메소드를 실행시킴과 동시에 반환 값을 기대하지 않는다는 것은 실행되었을 때 blocking이 되지 않고 이벤트 큐에 넣거나 백그라운드 스레드에게 해당 task를 넘기고 바로 다음 코드를 실행하기 때문에 기대되는 값이 바로 반환되지 않는다는 의미이다.

  • 요청 이후 응답을 받지 않아도 다음 동작이 이루어진다.
  • 어떠한 작업을 처리할 동안 다른 작업을 할 수 있다.
    -> 컴퓨터 자원을 효율적으로 사용할 수 있다.
  • 요청 시 할 일이 끝난 후 처리 결과를 알려주는 콜백 함수(Callback Function)을 함께 사용한다.
  • 콜백을 했을 때, 호출받은 함수는 바로 응답을 수행한다.
    -> 해당 응답은 처리 결과에 대한 응답이 아닌 요청에 대한 확인 동작이다.
  • DOS와 같은 단일 OS에서는 불가능하고, Windows와 같은 Multitask 환경에서만 가능하다.

이 역시 해야할 일로 비유할 수 있는데 빨래, 설거지 청소를 해야 한다면 빨래는 빨래 업체에, 설거지는 설거지 업체에, 청소는 청소 업체에 맡긴 뒤에 다른 작업을 할 수 있다. 업체에 맡긴 일들은 완료되면 업체에서 연락이 오기 때문에 따로 기다릴 필요는 없다.

장점

  • 결과가 주어지기 전에도 다른 작업을 수행할 수 있어 자원을 효율적으로 사용할 수 있다.

단점

  • 동기식보다 설계가 복잡하고 덜 직관적이다.
profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글