멀티 쓰레드로 동작하는 앱을 작성하고 싶을 때 고려할 수 있는 방식들을 설명하시오.

김지훈·2022년 4월 15일
0

iOS 면접

목록 보기
59/82
post-custom-banner

멀티 스레딩을 사용하는 이유
시간이 오래걸리는 작업 진행 시 어플리케이션의 실행을 방해하면 안되기에
멀티 코어에서 큰 작업을 여러개로 분할하여 진행해야 하기에
메모리 공간과 시스템 자원 절약하기 위해서

  • 고려해야할 점
    • 어떤 작업을 글로벌 큐에 넣어야 할지 정확히 알아둬야 함
    • 글로버 큐에 작업을 배치할 때, 작업에 따라 QoS를 적절하게 사용해야함
    • 동기로 할지 비동기로 할지를 명확하게 정의해야함
    • 상황에 따라 작업간의 인과관계를 설정하거나 특정 시간 이후에 처리하도록 설정해야함
  • 직접적으로 스레드를 관리하지 않고 Queue를 활용하여 작업을 분산 처리하고 GCD, Operation을 이용하여 iOS에서 알아서 스레드 숫자를 관리한다. 그리고 다른 스레드에서 작업들이 "비동기적으로 동작"하도록 만든다. (GCD Queue, NSOperationQueue

QoS란 global queue를 사용할때, 작업마다 중요도를 매겨서 순위에 따라 처리하는 것

User-interactive: 즉시 완료해야하는 작업을 나타냄. UI 업데이트, 이벤트 처리 등에 사용. 메인 스레드에서 실행되어야 함.
User-initiated: 사용자 상호 작용을 계속하는 데 필요한 작업을 기다리고 있을 때 사용.
Utility: 사용자에게 표시되는 진행률 표시가 있는 장기 실행 작업을 나타냄. 계산, I/O, 네트워킹, 연속 데이터 피드 및 유사한 작업에 사용. 우선 순위가 낮은 글로벌 큐에 매핑
Background: 사용자가 직접 알지 못하는 작업을 나타냄. 유저 관리 및 사용자 상호 작용이 필요하지 않고 시간에 민감하지 않은 기타 작업에 사용.

GCD, Operation 공부하자..

뷰와 관련된 작업 - 메인 스레드 - 메인큐 (시리얼 큐)
뷰의 흐름에 방해되는 작업 - 글로벌 스레드 - GCD(시리얼, 동시 둘다) or NSOperation q(동시큐)

post-custom-banner

0개의 댓글