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는 작업을 모니터링하거나 중단, 취소해야할때 등 세부적인 조작이 필요할 때 사용한다.