동기란
- 요청에 대한 결과를 받은 후에야 다음 요청을 진행하는 방식으로, 결과를 받을 때까지 대기해야 한다. (값이 반환되기 전까지는
blocking
됨)
- 직관적이지만, 비효율적이다.
비동기란
- 요청 결과에 상관 없이 바로 다음 요청을 수행한다. 요청했던 작업이 끝나면 결과를 받고, 그에 따른 추가 작업이 있다면 수행한다. (
blocking
되지 않음)
- 설계가 복잡하지만 효율적이다.(동시에 다수의 작업을 처리할 수 있음)
Block vs Non-Blocking
- Blocking : System Call이 완료될 때까지 Waiting Queue에서 대기한다.
- Non-Blocking : System Call 완료와 관계 없이 자신의 작업을 진행한다.