본문 바로가기

자잘한내용들

동기(Synchronous) vs 비동기(Asynchronous)

동기

1. 동기(Synchronous) 의 의미는 동기화(Synchronization)의 동기이다

2. 프로그래밍에서의 동기 의미는 현재 작업의 요청과 응답이 동시에 발생하는 것 으로 설명하지만

현재 작업의 응답과 다음 작업의 요청을 동시에 발생 이 더 적합하게 생각한다

동기 방식은 현재 작업의 응답과 다음 작업의 요청의 타이밍을 맞추는 방식이다

3. 이 응답이라는 것도 귀에 붙히면 귀걸이고 코에 붙히면 코걸이로, 네트워크 모델에서는 서버의 응답일 수도 있고 I/O 모델에서는 프로세스 제어권의 반납일 수도 있다.

4. 일반적으로 동기 방식이면 블록킹방식을 사용한다

 

예시) 동기+블록킹 방식 출근에 대한 응답이 도착하자마자 퇴근에 대한 요청을 시작한다

예시) 동기+논블록킹 방식  작업이 완료했는지 물어보는 응답과 요청을 지속적으로 하면서 대기상태가 아닌 작업을 처리한다

비동기

1. 동기의 '현재 작업의 응답과 다음 작업의 요청을 동시에' 의 반대로 응답을 신경쓰지 않고 요청 후 응답이 오기전까지 신경쓰지 않는다

2. 때문에 일반적으로 비동기방식이면 논블록킹 방식을 사용한다 

출처:https://evan-moon.github.io/2019/09/19/sync-async-blocking-non-blocking/