애플에서는 swift를 쓰는데 이때 비동기식으로 작성하는 async/await에 대한 것은 아직 나오지 않았다.
그런데 최근에 이제 이 녀석들이 추가되었고, task, taskgroup, actor등이 새로 나와 비동기적 코드를 좀더 직관적으로 사용할 수 있게 되었다.
swift 이후 GCD를 사용했지만 원래는 obj-c를 메인으로 해서 설계하였기 때문에 정확히는 swift가 GCD를 빌렸다고 할 수 있다.
swift5.5 이후 이제 새로운 async/awaity 모델을 코드에 도입해 보자
이제 새로운 concurrency 모델은 swift에서 안전하게 프로그램을 작성하기 위해 도와주며 아래와 같은 녀석들이 포함된다.
swift5.5에서 사용이 가능하니 버전 체크를 해야 한다.
보통 동기라고 하면 위에서 아래로, 순차적으로 진행된다. 약간 c언어의 느낌 절차지향과 비슷하다고 생각이 들었다. 이는 단일 cpu코어의 하나의 실행 스레드에서 실행될 것이다.
그런데 iOS 및 macOS앱은 비동기적인 녀석들이니 사용자 입력, 네트워크 등 다양한 이벤트에 따라 프로그램을 실행할 수 있다.
주의해야 할 점은 비동기적인 코드에서 여러 비동기 함수가 동일한 스레드를 사용할 때 어떤 함수가 어떤 순서로 실행되는지 알 수 없다.
비동기의 장점은 요청을 하고, 성공여부 콜백을 받을 때까지 cpu가 다른 작업을 할 수 있다는 것이다.