일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IOS
- 오브젝트
- 앨런
- 운영체제
- 100 days of SwiftUI
- 인프런
- async
- 비동기
- Algorithm
- deadlock
- Swift
- @state
- UserDefaults
- 데드락
- 가상 메모리
- scrollview
- Codable
- struct
- core data
- COLOR
- SwiftUI
- 동시성
- forEach
- Apple Developer Academy
- 프로세스 스케줄링
- 알고리즘
- Linked List
- 상호배제
- decode
- 동기화
- Today
- Total
목록비동기 (11)
기어가더라도 제대로
반드시 메인큐에서 처리해야하는 작업 UI 관련일들은 "메인큐" 에서 처리해야한다. 1번 스레드(메인 스레드) 는 계산 로직도 하지만, 화면 표시 작업도 담당한다. 화면을 표시하는 일은 한개의 쓰레드(메인큐, 메인쓰레드)에서만 담당해야한다. 1번 스레드에서도 화면을 업데이트하고 2번 스레드에서도 화면을 업데이트한다면? 그 작업이 같은 유아이작업을 했다면? 운영체제는 어떤 쓰레드의 결정을 따라야하는가? 작업의 끝에 UI를 업데이트 해야하는 경우라면 그 부분만 main 큐에 보내야한다. 다운로드 로직은 다른 큐에서 처리를 하고 이미지를 화면에 표시하는 작업은 Main 큐로 보내서 실행해야한다. 하나의 작업 안에서 다른 큐로 작업을 보낼 수 있다. urlSession의 dataT..
직렬 큐는 단 하나의 스레드로만 보낸다.(Serial) 동시 큐는 다른 여러개의 스레드로 보낸다. (Concurrent) 직렬큐는 왜 필요할까? 순서가 중요한 작업을 처리할 때 사용 동시 큐는 언제 사용할까? 동시 큐는 각자 독립적이지만 유사한 여러개의 작업을 처리할 때 사용 셀마다 이미지를 불러오는 작업이 동시적으로 처리가 될 수 있다. 비동기와 동기 비동기(Async) 작업을 다른 스레드에서 하도록 시킨 후, 그 작업이 끝나길 기다리지 않고 다음일을 진행한다.(안기다리고 다음 작업을 생성) 동기(Sync) 작업을 다른 스레드에서 하도록 시킨 후, 그 작업이 끝나길 기다렸다가 다음 일을 진행한다. (기다렸다가 다음 작업 생성) 직렬 큐와 ..
비동기 작업을 다른 스레드로 보내서 처리를 하는데, 보내는 즉시 원래 스레드로 리턴한다. 1번 작업이 오래걸리더라도, 그 일이 끝나던지 말던지 2번 작업으로 갈 수 있다. DispatchQueue.global().async { } 원래 작업이 진행되고 있던 곳(메인스레드)에서 디스패치 글로벌 큐로 보낸 작업을 안기다린다. 동기 1번 작업이 끝날 때까지 메인 스레드를 막고 기다린다. 다른 큐에 보내는 것 같지만 실질적으로 처리는 메인 스레드에서 진행한다. DispatchQueue.global().sync { } 원래 작업이 진행되고 있던 곳(메인스레드)에서 디스패치 글로벌 큐로 보낸 작업을 동기적으로 기다린다. 위에 task1,2,3() 메서드들은 시작 - 완료 사이에 `s..