일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SWIFT
- 리펙터링
- Clean Code
- clean architecture
- UITextView
- UICollectionView
- 리팩토링
- Xcode
- map
- RxCocoa
- ribs
- uitableview
- Observable
- swift documentation
- 리펙토링
- swiftUI
- Protocol
- combine
- MVVM
- tableView
- rxswift
- Refactoring
- 스위프트
- Human interface guide
- ios
- collectionview
- 클린 코드
- 애니메이션
- HIG
- uiscrollview
- Today
- Total
목록GCD (8)
김종권의 iOS 앱 개발 알아가기
사전지식) RxSwift의 GCD 종류 1) main (serial) main thread에서 처리되는 serial queue (모든 UI관련 작업은 해당 큐에서 main queue에서 실행) 2) global (concurrent) 전체 시스템에서 공유되는 concurrent queue이고, concurrent이기 queue끼리의 우선순위를 위해서 queue를 사용할 때 QoS 설정 필요 userInteractive: 유저가 누르면 즉각 반응 (main queue) userInitiated: 유저가 실행시킨 작업들을 즉각적이지는 않지만, async하도록 처리 default utility: I/O, n/w API 호출 background: 유저가 인지하지 못할 정도의 뒷단에서 수행하는 작업 3) 커스텀 ..
1. 스레드 프로그래밍 이해하기 - 동시성 프로그래밍, thread, GCD, Swift Concurrency 2. 스레드 프로그래밍 이해하기 - Swift Concurrency가 나온 이유 (GCD의 한계, Thread explosion)
1. 스레드 프로그래밍 이해하기 - 동시성 프로그래밍, thread, GCD, Swift Concurrency 2 -> 3으로 출력되지 않고 1 -> 3 -> 2로 출력되는 이유? print(1) DispatchQueue.main.async { print(2) } print(3) /* 1 3 2 */ print(2)는 async로 작업되는것으로 프로그래밍 했으니, print(2) 의 실행은 지금 바로 실행이 되지 않아도 되기 때문에 print(2)의 실행 시점은 알 수 없음 여기까지는 일반적으로 알고 있는 내용이지만 실행 시점은 누가 제어하는것인지? 아래 스레드 제어권을 이해할 것 스레드 제어권 (WWDC 2021에 나오는 내용) 스레드 제어권이란 해당 스레드를 점유하여 이 스레드를 사용하여 work를 ..
DispatchQueue 개념 Thread pool을 thread safe하게 관리하는 객체 멀티 스레드에서도 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 발생하지 않는 것 Thread를 다루는 GCD(Grand Central Dispatch) 중 하나 DispatchQueue의 종류 3가지 1) main (serial) main thread에서 처리되는 serial queue (모든 UI관련 작업은 해당 큐에서 main queue에서 실행) 2) global (concurrent) 전체 시스템에서 공유되는 concurrent queue이고, concurrent이기 queue끼리의 우선순위를 위해서 queue를 사용할 때 QoS 설정 필요 userI..
* Sync vs Async vs Serial vs Concurrent 개념: https://ios-development.tistory.com/1082 GCD(Grand Central Dispatch) 쓰레드의 최상위에 만들어지며 공유된 Thread pool을 관리하여 thread safe 유지 GCD의 개념 참고 Queue 생성 DispatchQueue.global() 사용: 이미 존재하는 concurrent queue만 사용 DispatchQueue.init(label:qos:attributtes:) 사용: 우선순위, serial, concurrent 새롭게 사용 가능 global이 아닌 .init(label:qos:attributtes:)를 사용할때의 장점 디버깅에 용이: break point를 걸..
Sync vs Async vs Serial vs Concurrent Serial vs Concurrent: Queue에 들어온 작업 중, 앞 작업과 뒷 작업을 '순차적'으로 시킬것인지 아닐것인지 기준 sync vs serial sync: 앞 작업과 뒷 작업의 연관성이 없고 오로지, 자신의 요청에 대한 답을 받을때까지 기다리는 것 serial: Queue에 들어온 작업들을 순차적으로 실행 (FIFO) - 예시) Main queue 이론상, async한 작업을 Serial Queue에 넣으면 성능 저하가 될 수 있는 상태 (틀리다면 댓글 부탁드려요) 성능 저하 상황: A작업이 async작업이며 Serial Queue에 있다면, A작업이 끝나지 전에 다음 작업 처리 준비 > 다음 작업을 처리하려고 했지만 Se..
* Sync vs Async vs Serial vs Concurrent 개념: https://ios-development.tistory.com/589 1. Concurrency "time-slicing" : iOS에서 각 쓰레드는 병렬적으로 동시에 실행 가능 single core device에서는 위 그림과 같이 Thread하나로 "context switch"를 하면서 동작 multicore device에서는 위 그림과 같이 Thread여러개로 "Parallelism"으로 동작 2. GCD 1) 개념 GCD는 쓰레드의 최상위에 만들어지는 것, GCD는 공유된 Thread pool을 관리 하는 것 (Dispatch queue를 가지고 쓰레드의 실행을 결정) 2) Thread-safe Dispatch que..
1. GCD - Grand Central Dispatch API == GCD * Dispatch : 출격, 배포 GCD란 아래와 같은 기능을 쉽게 접근하여 일을 처리하는 API Thread 갯수 Multi, Single 코어 갯수 멀티, 싱글 동기화 sync, async 2. DispatchQueue - 큐에 담긴 각 아이템은 스레드 풀에 의해 처리됨 1) main : Main Thread에서 처리되는 Serial queue (모든 UI작업은 Main Queue에서 수행되어야 함) global : 전체 시스템에 공유되는 concurrent queue custom : serial queue를 만들고 싶을 때 사용, global queue에서 실행 2) Serial 이전 작업이 끝나면 다음 작업이 순차적으로..