블로킹 & 논블로킹, 비동기 & 동기 차이
블로킹 : 호출하고 결과가 끝날 때까지 제어권을 갖고 있는 것. 논블로킹 : 호출 직후 제어권이 돌아온다. 따라서 시스템 호출 종료를 기다리지 않고도 다음 처리로 넘어갈 수 있다. 이때 발생할 오류들은 오류 후 재시도 타이밍을 따로 정의할 필요가 있음. C10K 문제 (한번에 서버에서 10000개의 소켓을 생성하고 처리할 수 있느냐에 대한 문제. 동시 접속자수가 늘어남에 따라 많은 수의 소켓 처리의 효율적 방식이 필요해짐)
동기 : 처리가 완료될 때까지 기다려서 결과를 호출한 쪽에서 처리. 비동기 : 처리가 완료된 타이밍으로 결과를 회신하고 이 회신은 시그널이나 콜백의 형태로 이루어지고, 회신까지 기다리지 않고 다른 작업 진행 가능.
비동기 & 논블로킹 차이 : 논블로킹은 처리가 완료되지 않으면 에러를 회신, 블록 상태로 만들지 않지만 비동기는 처리를 바로 할 수 없을 때 처리 완료되는 시점까지 백그라운드에서 대기하고 종료한 타이밍을 회산한다.
블로킹&논블로킹 / 동기&비동기 차이 : 블로킹&논블로킹는 호출(한 쪽/된 쪽) 제어권에 관한 것을 결정 동기&비동기는 호출(한 쪽/된 쪽) 작업완료여부에 관한 것을 결정
참고 자료: https://victorydntmd.tistory.com/8, https://grip.news/archives/1304