동기는 데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것을 말한다.
요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다.
동기 작업은 순차적으로 진행되며, 하나의 작업이 끝나야 다음 작업이 실행되는 방식을 의미한다. 다시 말해, 한 작업이 완료되기 전까지는 다른 작업을 시작할 수 없다.
예를 들어, 함수를 호출하고 그 함수가 결과를 반환할 때까지 기다리는 경우가 동기 작업이다. 이때는 호출한 함수가 완료되기 전까지 코드 실행이 블록된다.
블로킹은 작업이 진행되는 동안 해당 작업이 완료될 때까지 다른 작업이나 코드 실행을 멈추는 상태를 말한다. 즉, 블로킹 작업은 호출된 함수나 작업이 결과를 반환할 때까지 실행 흐름이 멈추는 것을 의미한다.
이는 동기 작업과 관련이 있으며, 작업이 완료되기 전까지 다른 작업을 실행할 수 없다.
예를 들어, 파일을 읽는 작업을 할 때 블로킹 방식은 파일을 읽는 함수를 호출하면 파일 읽기가 완료될 때까지 프로그램의 실행 흐름을 멈춘다.
비동기는 동시에 일어나지 않는다는 의미다.
요청한 결과는 동시에 일어나지 않을거라는 약속이다.
비동기 작업은 순차적으로 기다리지 않고, 작업이 완료되지 않았더라도 다음 작업을 실행할 수 있는 방식을 의미한다. 비동기 작업은 여러 작업을 동시에 처리하거나, 하나의 작업이 완료될 때까지 다른 작업을 실행하는 등의 유연성을 제공한다.
예를 들어, 파일 다운로드나 네트워크 요청을 비동기적으로 처리할 때는 요청을 보낸 후에 다음 코드로 넘어가며, 작업이 완료되면 콜백 함수나 프로미스 등을 통해 결과를 처리한다. 이를 통해 블록되지 않고 다른 작업을 수행할 수 있다.
논블로킹은 작업이 진행되는 동안 다른 작업이나 코드 실행을 멈추지 않고 계속 진행되는 상태를 말한다. 즉, 논블로킹 작업은 작업이 완료되지 않았더라도 다른 작업을 실행할 수 있는 것을 의미한다.
이는 비동기 작업과 관련이 있으며, 작업의 상태나 결과를 주기적으로 확인하거나 콜백 함수를 통해 결과를 처리하는 방식으로 작업을 관리한다.
예를 들어, 파일을 읽는 작업을 할 때 논블로킹 방식은 파일을 읽는 함수를 호출하더라도 파일 읽기가 진행되는 동안 다른 작업이 계속 실행된다. 이후 파일 읽기가 완료되면 알림을 받거나 콜백 함수가 실행되어 결과를 처리할 수 있다.
참고
동기와 비동기의 차이