게시물이 존재할 경우 아래에 최신순 4건이 배열됩니다
-
iOS Concurrency 프로그래밍, 동기/비동기 처리, GCD/Operation 에 대한 이해 (9)
9. GCD 관련 총정리 GCD 와 관련된 내용을 아래와 같이 순서대로 설명을 진행했다. 목차를 보고 GCD와 관련된 내용이 어떤 것이 있는지 파악을 하고 상세 내용은 각 단원별로 강의를 다시 한번 보면서 확인하면 될 것이다.
더보기
-
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의 문제를..
더보기
-
iOS Concurrency 프로그래밍, 동기/비동기 처리, GCD/Operation 에 대한 이해 (7)
7. 심화. Thread-safe한 코드의 구현과 방법 앱스토어 출시전에는 반드시 잠재적 경쟁 상황에 놓여있는지 점검해야한다. 그리고 Xcode에서 제공하는 기능인 TSan을 사용하면 잠재적 경쟁상태에 놓인 코드를 찾을 수 있다. 사용방법은 아래와 같다. 2) 시리얼큐와 sync 개발을 하다보면 Thread-safe 를 보장하기 위해서 시리얼큐.sync 를 사용해야하는 상황이 발생한다. 그리고 해당 예제는 아래와 같다. Thread-safe 하지 않은 상황의 예제는 아래와 같다. → Xcode 파일로 예제 코드를 제공해줬다. Thread-safe 한 상황의 예제는 아래와 같다. → Xcode 파일로 예제 코드를 제공해줬다. 위와 같이 코드를 작성할 경우 2,3,4번 작업에 명명된 print 함수들이 순차..
더보기
-
iOS Concurrency 프로그래밍, 동기/비동기 처리, GCD/Operation 에 대한 이해 (6)
6. 심화. 동시성과 관련된 문제 2개 이상의 쓰레드를 사용하면서, 동일한 메모리 접근 등으로 인해 동시성과 관련된 문제가 발생한다. 다른말로 Thread-Safety 하다고 한다. Thread-safe(쓰레드 세이프) : 여러 쓰레드가 동시에 쓰여도 안전하다는 의미이다. → 동시적으로 처리를 하면서 (여러 스레드를 사용하면서도) 문제없이 스레드를 안전하게 사용가능하다는 의미이다. 데이터(객체나 변수 등)에 여러 쓰레드를 사용하여 접근하여도, 한번에 한개의 쓰레드만 접근 가능하도록 처리하여 경쟁상황의 문제없이 사용할 수 있다는 것이다. 동시성 문제는 크게 아래와 같이 3가지로 나뉘어진다. Race Condition (경쟁 상황) Deadlocks (교착 상태) Priority Inversion (우선 순..
더보기