강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

Jun Young Jee님의 프로필 이미지
Jun Young Jee

작성한 질문수

앨런 iOS Concurrency(동시성) - 디스패치큐와 오퍼레이션큐의 이해

3. AsyncOperation(비동기오퍼레이션)

AsyncOperation을 async await Task로 대체 가능한 지에 대한 질문

작성

·

399

1

비동기 함수를 오퍼레이션으로 감싸는 경우에 대해 보다가 궁금한 게 있습니다. Async, await, asyne let, Task를 이용해서 비동기함수를 오퍼레이션으로 감싸는 처리를 대체하는 코드나 클래스를 만들 수 있을것 같은데 어떻게 생각하시는지 궁금합니다.

일단 GCD + DispatchGroup + completionHandler Closure 기반의 코드는 async await 등으로 꽤 많이 대체할 수 있지 않을까 생각이 들어서요

답변 1

0

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

네 안녕하세요. 준영 님.

일단 기본적으로 그동안 캠플리션 핸들러(콜백함수)로 처리하던 것들이 async/await 기능이 생기면서, 훨씬 깔끔하고 직관적으로 처리하는 방향으로 가는 것 같습니다.

코드도 그렇고, 함수 실행에 일시 중단 / 재개 같은 개념 (Continuation) 도 도입되었고, 그 외에 액터(Actor)를 사용해서 데이터 동기화까지.. 아주 여러가지 기능이 있더라고요.

그리고 본원적으로 기존에 큐(대기열)을 사용하던 방식에서 아예 벗어나서, 어떤 작업들을 부모/자식의 개념(어떤 구조화된 동시성)에서 부모 작업을 취소하면.. 자식 작업들도 취소되는 이런 개념도 있습니다. (그냥 동시성 모델이 완전히 재설계 되었다고 보는게 맞습니다.)


다만, 모든 내용들이 완전히 새로운 방식들로 바뀌어야 해서... 아직 저도 말씀하신 비동기 오퍼레이션이나, 디스패치 그룹 방식의 코드 처리가 정확하게 1:1로 어떤 방식으로 매칭되는지를 (어떤 방식의 코드로 바꿔서 실무에 적용할 수 있는지) 연구해 보고 있습니다.

저도 생각했던 것보다, 자료 정리들이 정말 많이 필요해서
시간이 많이 필요할 것 같긴하네요.

물론 강의를 업데이트 할 계획을 계속 가지고 있었어서, 추후에 여러가지로 자료 정리 및 강의를 새롭게 업데이트 계획이 정확하게 정해지면 공지해 드리도록 하겠습니다.


결론적으로는,
많은 기능들이 완전히 새로운 방식으로 대체되는 것이 맞습니다. 그래서 기존 개념과 완전히 다른 방식으로 (내부적으로 동작하는 것등) 생각보다 많은 내용들을 새롭게 학습해야하는 것 같습니다. (아예 그래서 사고 체계가 바뀌어야 하는 부분도 많고요.....)
(2021, 2022 WWDC에서도 관련세션만 해도 엄청나네요ㅠ)

감사합니다.. :)

Jun Young Jee님의 프로필 이미지
Jun Young Jee

작성한 질문수

질문하기