Programming/etc

동기와(Synchronous)와 비동기 처리(Asynchronous)

esoog Polaris 2023. 6. 5. 19:01
반응형

동기 처리(Synchronous)와 비동기 처리(Asynchronous)는 프로그래밍에서 작업을 수행하는 방식을 나타냅니다. 두 가지 처리 방식은 작업의 진행과 완료에 대한 제어 방식에서 차이가 있습니다.

 

 


1. 동기 처리 (Synchronous):
   - 작업이 순차적으로 진행되며, 한 작업이 완료될 때까지 다음 작업으로 넘어가지 않습니다.
   - 작업이 차례대로 실행되기 때문에 순서와 상호 의존성이 중요한 경우에 유용합니다.
   - 작업이 완료될 때까지 대기하는 동안 다른 작업을 수행할 수 없으므로, 블로킹(blocking) 현상이 발생할 수 있습니다.
   - 동기 처리는 직관적이고 간단한 구조로 코드를 작성할 수 있으나, 작업이 오래 걸리는 경우 전체 시스템의 성능에 영향을 줄 수 있습니다.

 

 


2. 비동기 처리 (Asynchronous):
   - 작업이 병렬적으로 진행되며, 한 작업의 완료 여부를 기다리지 않고 다음 작업으로 넘어갑니다.
   - 작업이 독립적으로 실행되므로 다른 작업을 수행할 수 있으며, 블로킹 현상이 발생하지 않습니다.
   - 작업이 완료되면 결과를 처리하기 위해 콜백(callback) 함수 또는 이벤트 핸들러를 사용합니다.
   - 비동기 처리는 작업을 효율적으로 처리하고, 시스템의 응답성과 성능을 향상시킬 수 있습니다. 하지만 코드의 복잡성이 증가할 수 있습니다.

 

 

예를 들어, 파일을 읽는 작업을 수행한다고 가정해보겠습니다.
- 동기 처리: 파일을 읽을 때까지 프로그램의 실행이 중지됩니다. 파일이 완전히 읽힌 후에야 다음 작업으로 넘어갑니다.
- 비동기 처리: 파일을 읽는 동안 프로그램은 다른 작업을 수행할 수 있습니다. 파일 읽기가 완료되면 콜백 함수가 호출되어 결과를 처리합니다. 프로그램의 실행이 중단되지 않습니다.

동기 처리는 작업의 순서와 의존성이 중요한 경우에 적합하며, 비동기 처리는 작업의 독립성과 시스템의 성능을 개선하는 데 적합합니다. 비동기 처리는 네트워크 요청, 파일 입출력, 데이터베이스 쿼리 등과 같이 시간이 오래 걸리는 작업을 효과적으로 처리하는 데 유용합니다.

728x90

'Programming > etc' 카테고리의 다른 글

로그(log)  (0) 2023.06.07
세션(Session)  (0) 2023.06.07
웹(WEB)과 앱(APP) 비교  (0) 2023.06.06
보안 설계에 관하여  (0) 2023.06.06
GET과 POST 방식  (0) 2023.06.02