CS

프로그램과 통신에서의 동기 비동기 차이 및 개념

cob 2024. 2. 10. 15:56

 

1. 프로그램

1-1) 동기(Synchronous) - 순차 작업

작업이 순차적으로 진행되는 방식으로 한 작업이 다른 작업을 호출하면, 호출된 작업이 완료될 때까지 대기하고 기린다. 이 때문에 작업의 순서와 진행 상태를 예측하기 쉽다.

예를 들어, 함수 A가 함수 B를 호출하고, 함수 B의 결과를 반환할 때까지 함수 A는 대기합니다. 이는 호출된 함수가 실행을 완료할 때까지 제어를 넘기지 않는 것을 의미합니다.

동기

 

1-2) 비동기(Asynchronous) - 병렬 작업

작업이 순차적으로 진행되지 않고, 작업이 백그라운드에서 병렬로 실행된다. 한 작업이 다른 작업을 호출하면, 호출된 작업이 완료될 때까지 대기하지 않고 즉시 다음 작업을 실행합니다. 

예를 들어, 함수 A가 함수 B를 호출하고, 함수 B의 결과를 기다리지 않고 다른 작업을 수행할 수 있습니다. 함수 B의 실행이 완료되면 콜백 함수나 이벤트 핸들러를 통해 결과를 처리할 수 있다.

비동기

 

 

 

 


2. 통신

2-1) 동기(Synchronous) - 일회성 통신

순차적적인 처리가 필요하거나 신뢰성있는 데이터 처리가 필요할 경우 적합
(요청과 응답이 직렬적으로 이루어지며, 응답을 받기까지 대기)
동기 통신에서는 요청과 응답이 발생하면 해당 통신 연결을 끊는 것이 일반적이다. 이는 클라이언트가 서버에 요청을 보내면, 서버는 그 요청에 대한 응답을 보내고 연결을 종료하는 방식이다. 따라서 동기 통신에서는 통신이 완료되면 연결을 끊고, 다음 통신을 위해 필요할 때 다시 연결을 수립한다.

EX ) 전화 통화, HTTP 요청 

 

 

2-2) 비동기(Asynchronous) - 지속적인 통신

대량의 데이터 처리나 다수의 동시 접속을 다루는 데 적합
비동기 통신에서는 일반적으로 클라이언트와 서버 간의 연결을 유지하고 데이터를 지속적으로 주고 받는다. 클라이언트가 요청을 보내면 서버는 그 요청을 비동기적으로 처리하고 응답을 반환하고, 이 과정에서 연결은 일시적으로 유지되며, 클라이언트와 서버 간의 지속적인 통신이 가능하게된다. 이는 비동기 통신의 특징 중 하나로, 연결을 재사용하여 효율적인 통신을 가능하게 만들어준다.

EX ) 이메일 전송, 웹소켓 통신

 

 

2-3) 동기와 비동기 통신에서의 연결 종료 시점

비동기 통신에서는 일반적으로 명시적으로 연결을 종료해야 한다. 클라이언트나 서버 중 한 쪽에서 연결을 종료하고자 할 때는 해당 쪽에서 연결 종료 요청을 보낸다. 이 외에 네트워크 연결이 끊어지거나 클라이언트와 서버간 일정시간 통신이 없으면(타임아웃) 종료된다. 반면에 동기 통신에서는 주로 요청과 응답 사이에 연결을 유지하는데, 클라이언트가 요청을 보내고 서버가 응답을 반환하면 연결이 종료된다. 이는 응답을 받은 후에 연결을 끊는 것이 일반적인 동기 통신의 동작 방식이기 때문이다.

동기 통신은 응답을 받으면 자동으로 연결이 종료되는 경우가 많지만, 비동기 통신에서는 명시적으로 연결을 종료시켜 주어야 한다.

 

반응형