비동기처리

희희희·2021년 11월 18일
0

동기와 비동기의 차이

동기(synchronous): 요청과 요청에 대한 결과가 동시에 일어나는 것을 의미한다. 예를 들어 메인스레드가 진행되고 있을 때 API 통신 등의 다른 작업이 진행되어야 한다면 결과를 받고 메인스레드를 다시 진행시켜야 하기때문에 그동안은 정지한 상태로 있어야한다.

비동기(asynchronous): 동기와 달리 요청과 결과가 동시에 일어나지 않아도 되는 것을 의미한다. 즉, 여러 작업이 동시에 진행될 수 있다.


Swift 코드를 이용한 예시

세 번의 print함수를 이용해 비동기처리가 제대로 진행되는 지 확인해볼 것이다.

첫번째 print함수와 세번째 print함수와 달리 두번째 print함수를 DispatchQueue.main.asyncAfter()를 이용해 비동기적으로 딜레이를 주고 제대로 출력되는 지 확인해보았다.

예상대로 두번째 print결과가 나오기 전까지 기다리는 것이 아닌 세번째 print함수가 출력되는 것을 볼 수 있고, 개별적으로 두번째 print함수는 첫번째 print가 실행된 뒤 2초 뒤에 실행되는 것을 확인할 수 있다.


서버와 통신하는 작업이 많은 경우 굉장히 많이 볼 수 있을 것이다. 비동기처리를 하지않는다면 서버를 통해 데이터를 받아오는 동안 다른 작업들이 진행할 수 없게되고 이로 인해 실행 시간에서 큰 차이가 날 것이다.

profile
iOS 어플 개발 연습

0개의 댓글

관련 채용 정보