JAVA
[Java] sysnchronize(동기) asynchronize(비동기) 차이점 blocking non blocking 차이점
로춘남
2022. 3. 25. 14:06
728x90
Blocking vs Non-blocking
☞ 프로그램을 바로 실행가능한지 아닌지에 따라 다름
Blocking I/O model
- System Call이 끝날때까지 프로그램이 대기하고, System Call이 완료될 때 return하는 모델
- Wait Queue에 들어감.
Non-blocking I/O model
- System Call이 완료되지 않아도 대기하고 않고 return 하는 모델
- Wait Queue에 들어가지 않는다.
Synchronize(동기) vs Asynchronize(비동기)
☞ 결과물을 가져오는 시점에 따라 다름
동기(synchorunous)
- 요청을 보낸후 응답을 받아야하지만 다음 동작이 이루어지는 방식
- 모든 일이 순차적으로 실행됌
비동기(asynchrounous)
- 요청을 즉시 처리하지 않아도 그 대기 시간동안 또 다른 동작이 이루어지는 방식
- 모든 일이 병렬적으로 실행
Synchronize
- System Call이 끝날때까지 기다리고 결과물을 가져옴.
Asynchronize
- Callback 함수를 통해 System Call이 나중에 완료될 때 결과물을 가져옴.
ASynchronous Vs Non-Blocking
System Call이 즉시 Return될 때 데이터의 포함 유무에 따라 나뉜다
ASynchronous
- 요청에 대한 처리가 완료되지 않아도 운영체제에서 응답준비가 되면 응답.
Non-Blocking
- 요청에 대한 처리가 가능하면 응답하고, 불가능하면 Error를 반환.
Blocking Vs Synchronous
Wait Queue 유무에 따라 나뉠 수 있음.
Blocking
- System Call의 return 을 기다리는 동안 wait Queue에 필수로 머뭄.
Synchronous
- System Call의 return을 기다리는 동안 Wait Queue에 선택적으로 머물 수 있음.
참 고
출 처 : https://velog.io/@guswns3371/synchronize-VS-asynchronizeblocking-VS-non-blocking
728x90