본문 바로가기
cs & 개발 지식

동기 & 비동기, 블로킹 & 논블로킹 개념 이해하기

by devBucks 2023. 3. 21.

요즘 컴퓨팅 및 프로그래밍에서 중요한 개념으로 자주 언급되는 동기와 비동기, 블로킹과 논블로킹에 대해 알아보겠습니다.

이 글에서는 이러한 개념들의 차이점과 사용 사례를 설명하고, 각각의 조합이 어떻게 작동하는지 이해하는 데 도움이 되도록 개념에 대해 접근해보겠습니다.

 

1. 동기(Synchronous)와 비동기(Asynchronous)

 -> 동기와 비동기는 작업 실행의 순서와 타이밍에 관한 개념입니다.

 

  • 동기(Synchronous): 작업이 순차적으로 실행되며, 한 작업이 완료될 때까지 다음 작업은 대기합니다. 이 경우 프로그램은 한 번에 하나의 작업만 처리할 수 있습니다. 동기 방식은 작업 순서와 의존성이 중요한 경우에 적합합니다.
  • 비동기(Asynchronous): 작업이 동시에 실행되며, 작업이 완료되는 순서와 관계없이 다른 작업이 시작될 수 있습니다. 비동기 방식은 여러 작업을 동시에 처리해야 하는 상황에 적합하며, 성능과 효율성을 향상시킬 수 있습니다

출처:https://wikidocs.net/168327

 

2. 블로킹(Blocking)과 논블로킹(Non-Blocking)

 -> 블로킹과 논블로킹은 작업을 수행하는 동안 다른 작업이 대기하거나 차단되는지 여부에 관한 개념입니다.

 

  • 블로킹(Blocking): 한 작업이 완료될 때까지 다른 작업이 대기하거나 차단됩니다. 이 경우 프로그램은 다른 작업을 수행할 수 없어 성능과 효율성이 저하될 수 있습니다.
  • 논블로킹(Non-Blocking): 한 작업이 완료되기를 기다리는 동안 다른 작업이 차단되지 않습니다. 이 방식은 프로그램이 동시에 여러 작업을 수행하거나 대기 중인 작업이 있을 때 성능과 효율성을 향상시킬 수 있습니다.

출처:https://wikidocs.net/168327

 

3. 조합: 동기 / 비동기 - 블로킹 / 논블로킹

-> 이 개념들은 서로 독립적으로 조합할 수 있으며, 총 4가지 방식이 가능합니다.

 

  • 동기 & 블로킹(Synchronous Blocking): 작업이 순차적으로 실행되며, 한 작업이 완료될 때까지 다른 작업이 대기합니다. 작업이 진행되는 동안 프로그램은 차단되어 다른 작업을 수행할 수 없습니다. 이 방식은 단순한 프로그램이나 순차적으로 실행되어야 하는 작업에 적합합니다.
  • 동기 & 논블로킹(Synchronous Non-Blocking): 작업이 순차적으로 실행되지만, 한 작업이 완료될 때까지 다른 작업이 차단되지 않습니다. 작업은 여전히 순차적으로 처리되지만, 프로그램이 한 작업을 완료하기 위해 기다리는 동안 다른 작업을 수행할 수 있습니다.
  • 비동기 & 블로킹(Asynchronous Blocking): 작업이 동시에 실행되지만, 특정 작업이 완료되기를 기다리는 동안 다른 작업이 차단됩니다. 이러한 경우는 드물지만, 동시에 실행되는 작업 중 일부에 순차적인 의존성이 있는 상황에서 발생할 수 있습니다.
  • 비동기 & 논블로킹(Asynchronous Non-Blocking): 작업이 동시에 실행되며, 한 작업이 완료될 때까지 다른 작업이 차단되지 않습니다. 이 방식은 고성능 시스템, 웹 서버, 사용자 인터페이스, 데이터베이스 등과 같이 동시에 여러 작업을 처리해야 하는 상황에 적합합니다.

출처:https://wikidocs.net/168327

이러한 조합은 특정한 상황이나 요구 사항에 따라 선택되며, 개발자는 이러한 방식을 적절하게 활용하여 성능과 효율성을 최적화 할 수 있습니다.

 

결론

동기와 비동기, 블로킹과 논블로킹의 개념을 이해하는 것은 프로그래밍에서 성능과 효율성을 향상시키는데 중요한 역할을합니다. 각각의 조합이 어떻게 작동하는지 알고 있으면, 개발자는 특정 상호아에 맞는 최적의 방식을 선택하고 구현할 수 있습니다. 이를통해 높은 성능과 응답성이 요구되는 서비스를 개발할 수 있습니다.