CS

동기와 비동기

김디니 2022. 12. 30. 11:07

 

동기(Synchronous )

synchronous : 동시에 발생하는

데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것
  • 순차적/직렬적으로 태스크를 수행한다.
  • 요청을 보냈다면, 응답을 받아야 다음 동작이 이루어진다.
  • 순차적으로 실행되므로, 어떤 작업이 수행 중이라면 뒤의 작업은 대기한다.
  • 블로킹(작업 중단)이 발생한다.

사용자가 데이터를 서버에게 요청한다면 그 서버가 데이터 요청에 따른 응답을 사용자에게 다시 리턴해주기 전까지

사용자는 다른 활동을 할 수 없으며 기다려야한다.

 

ex) 브라우저를 실행시키는 시간이 약 10분이 소모된다고 가정했을 시,

브라우저가 실행되는 10분 동안 사용자는 컴퓨터의 다른 프로그램들을 동작시키지 못하며

브라우저가 켜지는 그 순간만을 계속 기다려야 한다.

이 시간이 10분이든 100분이든 관계없이 한 개의 데이터 요청에 대한 서버의 응답이 이루어질 때까지 계속 대기해야 한다.

 

장점
▶️ 설계가 매우 간단하고 직관적

단점
▶️ 결과가 주어질 때까지 아무것도 못하고 대기

 

 

비동기(Asynchronous)

Asynchronous : 동시에 발생하지 않는

요청한 결과는 동시에 일어나지 않을 거라는 약속
  • 병렬적으로 태스크를 수행한다.
  • 현재 작업의 종료여부와 무관하게 다음 작업을 실행한다.
  • 그러므로 동기 방식과는 달리 완료 순서가 보장되지 않는다.
  • 블로킹이 발생하지 않는다.

서버에게 데이터를 요청한 후 요청에 따른 응답을 계속 기다리지 않아도 되며 다른 외부 활동을 수행 가능하며,

서버에게 다른 요청사항을 보내도 상관없다.

 

장점
▶️ 요청에 따른 결과가 반환되는 시간 동안 다른 작업 수행 가능

단점
▶️ 동기식보다 설계가 복잡