일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클린 코드
- uitableview
- 애니메이션
- Observable
- swift documentation
- rxswift
- combine
- map
- 리팩토링
- ios
- SWIFT
- Clean Code
- Protocol
- UITextView
- swiftUI
- 리펙터링
- ribs
- MVVM
- HIG
- collectionview
- Human interface guide
- tableView
- uiscrollview
- 스위프트
- RxCocoa
- 리펙토링
- UICollectionView
- Xcode
- clean architecture
- Refactoring
- Today
- Total
목록DispatchQueue.main.sync (4)
김종권의 iOS 앱 개발 알아가기
DispatchQueue 개념 대학 전공서로 대표적으로 많이 쓰는 OS 공룡책에 의하면, apple은 스레드 풀을 DispatchQueue라는 곳에서 관리하도록 하여 개발자는 스레드 관리에 많은 신경을 쓰지 않고 사용이 가능 DispatchQueue를 사용하면 Thread Safe하게 스레드 풀을 알아서 관리 main 관련 스레드를 관리해주는 것들은 DispatchQueue.main으로 사용 background 관련 스레드를 관리해주는 것들은 DispatchQueue.global(), DispatchQueue()으로 사용 Async, sync 개념 async: 앞전에 있던 task들이 끝나는 것을 기다리지 않고 새로운 task를 처리 sync: 앞전에 있던 task들이 끝난 후에 새로운 task 처리 e..
DispatchQueue의 sync와 async 동작 main queue와 thread 구분하기 main thread는 single thread이며, 해당 작업을 처리하는곳이 queue async와 sync로 각각 queue에 작업 담기가 가능 DispatchQueue.main.async { // main queue에 async 작업 넣는 곳 } DispatchQueue.main.sync { // main queue에 sync 작업 넣는 곳 } ViewController를 생성하고 DispatchQueue.main 없이 코드를 작성하면 그 코드들은 모두 DispatchQueue.main.sync 큐에서 처리 class ViewController: UIViewController { override func..
기본지식) sync, async, serial, concurrency sync, async sync - 해당 작업이 끝날때까지 대기 async - 대기하지 않음 비동기가 필요한 이유? 대용량 이미지 파일 다운로드 시 기다리면 UI멈춘것처럼 보임 serial, concurrency serial - 하나의 스레드로 처리 concurrency - 여러개의 스레드로 작업을 분산 각각 독립적이지만 유사한 여러개의 작업을 처리하는 경우 (당근 마켓에서 반복적인 cell들의 물품 이미지 다운) async vs concurrency 차이점? async는 일의 시작 순서가 순서대로처리 하지 않음 concurrency는 일의 시작 순서는 차례대로 하지만 동시에 처리 DispatchQueue.main.sync 사용 주의 사..
기초: Sync vs Async vs Serial vs Concurrent 개념 Deadlock (교착 상태) 두 개 이상의 process 및 thread가 서로 상대방의 작업이 끝나기만을 기다리고 있어서 task들을 처리하지 못하는 상태 ex) deadlock Serial Queue인 상황: 한 번에 하나의 작업만 가능 > 내부에 sync한 작업이 존재 > deadlock 발생 let testQueue = DispatchQueue(label: "testQueue") // concurrent선언하지 않았으므로 디폴트인 Serial Queue testQueue.async { testQueue.sync { // 외부 블록이 완료되기 전에 내부 블록이 시작되지 않는 상태 // 외부 블록은 내부 블록이 완료되기..