Blocking, Non-Blocking
블로킹과 논블로킹의 개념을 이해하며, 같은 의미로 오해하기 쉬운 동기와 비동기의 개념도 간단하게 정리하겠습니다. 두 개념의 차이는 블로킹, 논블로킹은 작업의 흐름이 막히는지에 대한 개념이고 반면에 동기와 비동기는 작업의 흐름이 순차적인지 대한 개념입니다.
블로킹
메인작업에서 서브작업이 진행될 때, 메인작업의 흐름이 서브작업이 완료될 때까지 흐름이 막히는(block) 실행방식을 의미합니다. 즉, 작업의 제어권을 서브작업에게 넘겨주고 완료되면. 다시 메인으로 제어권이 돌아와 작업을 마무리하게 됩니다. 따라서 제어권이 넘어간 메인에서는 서브가 완료될 때까지 작업을 진행할 수 없습니다.
논블로킹
메인작업에서 서브작업이 진행되더라도 메인 작업의 흐름이 막히지 않는(non-block) 실행방식을 의미합니다. 즉, 작업의 제어권이 계속 메인작업에 있어 서브작업의 완료와 관계없이 메인 작업을 계속할 수 있습니다.
동기
앞선 작업이 완료되어야 다음 작업이 수행되는 실행방식입니다. 각 작업의 완료가 순차적으로(동기적) 발생합니다.
비동기
앞선 작업이 완료되지 않았더라도 계속해서 처리하는 것을 의미합니다. 각 작업의 수행은 동시에 진행될 수 있으나 완료의 순서는 순차적이지 않습니다.(비동기적)