CS/네트워크
[네트워크] 블로킹 vs 논블로킹(Blocking vs Non-blocking)
Heeyeon Choi
2024. 10. 30. 13:52
728x90
블로킹(Blocking)
- 개념: 블로킹 방식은 작업이 완료될 때까지 해당 작업을 기다리는 방식입니다. 특정 I/O 작업이 완료되기 전까지는 프로그램이 다른 작업을 진행하지 못하고 대기합니다.
- 특징: 하나의 작업이 끝날 때까지 기다리므로, 코드가 순차적으로 실행됩니다. 이 방식은 단순하지만, 작업이 오래 걸릴 경우 전체 프로세스가 느려질 수 있습니다.
- 장점: 구현이 상대적으로 간단하고 직관적입니다.
- 단점: 작업이 지연되면 CPU가 대기 상태로 전환되어 효율성이 떨어집니다. 특히 대규모 요청 처리에 부적합합니다.
논블로킹(Non-blocking)
- 개념: 논블로킹 방식은 작업을 요청한 후 결과를 기다리지 않고, 다른 작업을 진행하는 방식입니다. 요청된 작업이 끝나면 결과를 비동기적으로 받아옵니다.
- 특징: 작업이 완료될 때까지 기다리지 않기 때문에, 여러 작업을 동시에 처리하거나 대기 없이 빠르게 작업을 넘길 수 있습니다.
- 장점: CPU 효율성을 높이고, 많은 요청을 동시에 처리하는 데 유리합니다.
- 단점: 구현이 복잡해질 수 있으며, 코드가 비동기적 흐름을 따르기 때문에 이해하기 어려울 수 있습니다.
728x90