평소에 IT관련 책을 읽거나 인터넷 글을 읽을 때 동기, 비동기라는 용어를 자주 접한다.
어렴풋이는 알지만 그 용어의 정확한 느낌이 전해지지 않아서 chatGPT에 물어보았다.
그에 대한 정보를 잊지 않도록 기록하고자 한다.
동기와 비동기는 프로그램에서 처리하는 작업들의 실행 방식을 나타내는 용어이다.
🏋🏻♀️동기(Synchronous)
동기란 요청한 작업이 완료될 때까지 기다리고, 결과가 반환된 후에 다음 일을 처리하는 실행 방식이다. 즉, 작업이 순서대로 처리되고 이전 작업이 완료될 때까지 다음 작업을 하지 않는다.
- 간단하게 코드를 짤 수 있다.
- 순서대로 처리하기 때문에 결과를 예측하기 쉽다.
- 작업이 완료될 때까지 대기하기 때문에 오류 처리하기 쉽다.
- 요청한 작업이 끝나야 다른 작업을 하므로 전체적인 처리 시간이 오래 걸린다.
- 여러 작업이 존재할 경우 병목현상으로인해 처리 속도가 느려질 수 있다.
🤹🏻♂️비동기(Asynchronous)
비동기란 작업 요청 후에 결과를 기다리지 않고 다음 작업을 처리한다. 작업이 백그라운드에서 실행되며 작업이 완료되면 결과를 받아 처리한다.
- 여러 작업을 동시에 처리하기 때문에 전체적인 처리 속도가 빠르다.
- 한 가지 무거운 작업이 있더라도 요청하고 다른 작업도 하기 때문에 처리 속도가 빠르다.
- 작업 처리 결과를 예측하기 어렵기 때문에 오류를 처리하기 어렵다.
- 여러 작업을 처리할 때 순서를 제어해야 할 수도 있으므로 코드가 복잡해지기 쉽다.