본문 바로가기

IT/iOS

iOS Concurrency 프로그래밍, 동기/비동기 처리, GCD/Operation 에 대한 이해 (8)

8. lazy var와 관련된 이슈들

  • lazy var 의 경우 사용이 되는 시점에 메모리에 해당 값이 올라가는데 그 시간이 오래 걸리다 보니 여러 스레드에서 접근을 할 경우 여러 값들이 생성되는 문제가 발생할 수 있다.
  • 예제는 아래와 같다.

  • 위와 같이 lazy var 를 사용할 경우 Thread-safe 하지 못한 상황에 놓이게 되고 이를 해결하기 위한 방법은 아래와 같이 4가지가 있다.

  • 위의 방법들을 통해서 어떻게 lazy var 문제를 해결하는지 예제는 아래와 같다.
  • lazy var의 문제를 해결하는 방법 → 1. 시리얼큐 + sync (엄격한 Thread-safe)
  • lazy var의 문제를 해결하는 방법 → 2. Dispatch Barrier 적용 (조금 더 효율적인 방법)

  • lazy var의 문제를 해결하는 방법 → 3. 세마포어 적용