TIL(Today I Learned)

1월 7일(목)

학습내용

  • DispatchQueue에 대해서 활동학습을 진행하였다.
    • 동시성 프로그래밍, 병렬 프로그래밍의 차이는?
      • 동시성은 논리적인 개념이다. 싱글코어, 멀티코어 다 가능하며, 싱글코어는 시분할을 통해 가능하다. 여러 쓰레드를 동시에 실행할때 동시성 프로그래밍을 사용한다.
      • 병렬성은 물리적인 개념이다. 머신러닝, 그래픽 처리 등을 할 때 병렬성 프로그래밍을 사용한다.
      • WWDC 2017 : Mordernizing Grand Central Dispatch Usage 에서의 Parallelism과 Concurrency
        • Parallelism: Simultaneous execution of closely related conputations.
        • Concurrency: Composition of independently executed tasks.
    • 동시성 프로그래밍을 위해 사용할 수 있는 기술은?
      • NSThread, NSOperationQueue, GCD
    • DispatchQueue와 OperationQueue의 차이는?
      • OperationQueue: 작업의 중단 및 취소가 가능하다. 작업의 모니터링이 가능하다.
      • DispatchQueue : FIFO로 작업을 수행한다.
    • GCD Dispatch은 Framework, Operation은 Class 이다.

문제점/고민한점

  • Race Condition은 어떻게 해결해야할까?
  • DispatchQueue와 OperationQueue의 차이는?

해결방법

  • Race Condition은 어떻게 해결해야할까?
    • NSLock, DispatchSemaphore을 사용하여 해결할 수 있다.
  • DispatchQueue와 OperationQueue의 차이는?
    • DispatchQueue는 간단한 작업을 처리할 때 사용한다.
    • OperationQueue는 작업을 모니터링하거나 중단, 취소해야할때 등 세부적인 조작이 필요할 때 사용한다.