[ JavaScript ] Blocking, Non-Blocking (feat. Async, Sync) < 2 >

exceed_96·2024년 2월 5일
0

JavaScript

목록 보기
10/18
post-thumbnail

지난 Blocking,Non-Blocking, Sync, Async 1편에서는 각각의 개념과 어떤 식으로 동작하는지에 대해서 간략하게 살펴보았다. 이번 포스팅에서는 위 4가지를 조합해서 쓰는 방법에 대해서 알아보자

아직 해당 개념들에 대해서 익숙하지 않다면 아래 링크를 한번 참고하길 권장한다.

Sync, Async, Blocking, Non-Blocking 1편



1. 비동기/동기, 블록킹/논블록킹의 4가지 조합

1.1 Sync + Blocking

Sync + Blocking은 다른 작업이 진행되는 동안 즉, 자신한테 제어권이 없다면 해당 작업을 처리하지 않고, 제어권을 가지고 있는 다른 작업이 완료되었다면 해당 결과를 받아서 순차적으로 처리하는 방식이다.


1.2 Sync + Non-Blocking

Sync + Non-Blocking은 다른 작업이 진행되는 동안에도 Non-Blocking이기 때문에 자신의 작업을 처리할 수 있고, 다른 작업의 결과를 받았을 때 해당 결과를 바로 처리하여 순차적으로 작업을 진행한다.


1.3 Async + Blocking

Async + Blocking은 다른 작업이 진행되는 동안에는 제어권을 가지고 있지 않으므로 자신의 작업을 처리하지 않는다. 또한 다른 작업이 완료되어 제어권과 결과를 받아도 해당 작업을 바로 처리하지 않는다.


사실 위 케이스는 매우 비효율적인 조합이라서 실상 사용하는 곳은 별로 없다.

1.4 Async + Non-Blocking

Async + Non-Blocking은 다른 작업이 진행되는 동안에도 Non-blocking이기 때문에 자신의 작업을 처리할 수 있고, 다른 작업이 완료되어 결과를 반환해 줘도 해당 결과를 바로 처리하지 않는다.



2. 마치며

위 4가지 조합은 42Seoul c++ 과제인 "ft_irc"를 진행하면서 접해보긴 했지만 그때나 지금이나 이해하기에는 확실히 어려운 개념인 거 같다.

하지만 async/sync, blocking/Non-blocking이 어떤 기준으로 해당 개념이 나눠지고 어떤 식으로 판단하는지만 잘 이해하고 있다면 완벽히는 아니지만 어느 정도는 내 거로 만들 수 있다고 생각한다.(다만 코드상으로 접목시키기에는 벽이 느껴질 거 같긴 하지만..)



3. Reference

https://akasai.space/node-js/about_node_js_3/
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%EB%8F%99%EA%B8%B0%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%A1%9C%ED%82%B9%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
https://www.youtube.com/watch?v=oEIoqGd-Sns&t=2s

profile
개발진행형

0개의 댓글

관련 채용 정보