blocking/non-blocking vs synchronous/asynchronous
🏷️blocking/non-blocking vs synchronous/asynchronous
- 헷갈리는 개념이지만, 두 개념은 엄연히 다른 기준을 갖고 있다.
📌blocking/non-blocking
- 기준: 대기
- blocking은 대기가 존재하고, non-blocking은 대기가 존재하지 않는다.
- blocking은 요청한 작업이 완료될 때까지 return하지 않지만, non-blocking은 무조건 즉시 return 된다.
📌synchronous/asynchronous
- 기준: 순서
- synchronous는 순서로 처리되는 것(sequential, in-order)이고, asynchronous는 순서대로 처리되지 않는 것(out of order, ooo)이다.
- asynchronous는 처리 순서가 바뀔 수 있기 때문에 return 시점에 성공/실패 여부를 알 수 없고, 처리 성공/실패 여부를 따로 확인하기 위한 루틴이 필요하다.