[Node.js] blocking I/O, non-blocking I/O

최고은·2023년 6월 3일
0

블로킹 I/O

논 블로킹 I/O 프로그래밍에서는 I/O를 요청하는 함수의 호출은 작업이 완료될 떄 까지 스레드의 실행을 차단한다.
다중커넥션을 위한 다중 스레드를 생각해보았을때, 스레드가 꽤 많은 시간 블로킹 된 다는 것을 알 수 있다.
장시간 실행 스레드를 가지게 됨으로써 cpu와 메모리를 낭비하게 된다.

논 블로킹 i/o

시스템 호출은 데이터가 읽혀지거나 쓰여지기를 기다리지 않고, 항상 즉시 반환된다. 호출 순간에 사용 가능한 결과가 없는 경우, 함수는
미리 정의된 상수를 반환하여 그 순간에 사용 가능한 데이터가 없다는 것을 알린다.
논 블로킹 i/o의 가장 기본 적인 패턴은 실제 데이터가 반환될때까지 루프 내에서 리소스를 적극적으로 polling 하는 것이다. 이것은 바쁜
대기(busy-waiting)이라고 한다. 이를 통해 서로 다른 리소스를 같은 리소스 내에서 처리할 수 있지만, 사용하지 않는 리소스에 대해
엄청난 낭비를 초래한다. 폴링 알고리즘은 엄청난 cpu 낭비를 초래한다

profile
5년차 프론트엔드 개발자 최고은 입니다!

0개의 댓글