[CS] Blocking/Non-blocking & Synchronous/Asynchronous

giggle·2023년 8월 10일
0
post-custom-banner

📌 Blocking/Non-blocking

Blocking/Non-blocking은 간단히 말해서 호출된 함수가 호출한 함수에게 제어권을 건네주는 유무의 차이라고 볼 수 있습니다.

Blocking

블로킹 작업은 한 작업이 완료될 때까지 다른 작업을 수행하지 않는 방식입니다. 작업이 완료될 때까지 해당 작업이 끝날 때까지 기다리게 됩니다. 이는 대부분의 입출력 작업에서 나타납니다. 블로킹 작업은 호출된 함수나 작업이 끝날 때까지 실행 흐름을 중단시킵니다.

Non-blocking

논블로킹 작업은 한 작업이 진행되는 동안에도 다른 작업을 수행할 수 있는 방식입니다. 작업을 시작한 후 그 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있습니다. 이를 위해 비동기식 작업을 사용할 수 있습니다. 논블로킹 작업은 호출된 함수나 작업이 완료될 때까지 실행 흐름을 중단시키지 않습니다.

📌 Synchronous/Asynchronous

Synchronous

동기 작업은 요청한 작업이 완료될 때까지 대기하는 방식입니다. 요청한 작업이 처리되기를 기다린 후 결과를 받아 처리합니다. 동기 작업은 호출된 함수나 작업이 끝날 때까지 다른 작업을 수행하지 않습니다. 주로 블로킹 작업과 연관되어 있습니다.

Asynchronous

비동기 작업은 요청한 작업이 완료될 때까지 대기하지 않는 방식입니다. 작업을 요청한 후에도 다른 작업을 수행할 수 있고, 결과가 나중에 도착하면 그에 따라 처리합니다. 비동기 작업은 호출된 함수나 작업이 완료될 때까지 다른 작업을 수행할 수 있습니다. 주로 논블로킹 작업과 연관되어 있습니다.



Blocking/Non-blocking은 작업이 다른 작업을 기다리게 할지 여부를 나타내는 개념이고, Synchronous/Asynchronous는 작업의 완료를 기다릴지 여부를 나타내는 개념입니다.

참고


피드백 및 개선점은 댓글을 통해 알려주세요😊

profile
배움을 글로 기록하는 개발자가 되겠습니다.
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기