일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- @state
- COLOR
- 동시성
- forEach
- 알고리즘
- 프로세스 스케줄링
- core data
- struct
- 파일 시스템
- UserDefaults
- 상호배제
- 운영체제
- Apple Developer Academy
- 동기화
- 가상 메모리
- IOS
- 100 days of SwiftUI
- decode
- 오브젝트
- SwiftUI
- 데드락
- async
- Swift
- 비동기
- 앨런
- 인프런
- Algorithm
- deadlock
- Codable
- Linked List
- Today
- Total
목록CS (88)
기어가더라도 제대로
반드시 메인큐에서 처리해야하는 작업 UI 관련일들은 "메인큐" 에서 처리해야한다. 1번 스레드(메인 스레드) 는 계산 로직도 하지만, 화면 표시 작업도 담당한다. 화면을 표시하는 일은 한개의 쓰레드(메인큐, 메인쓰레드)에서만 담당해야한다. 1번 스레드에서도 화면을 업데이트하고 2번 스레드에서도 화면을 업데이트한다면? 그 작업이 같은 유아이작업을 했다면? 운영체제는 어떤 쓰레드의 결정을 따라야하는가? 작업의 끝에 UI를 업데이트 해야하는 경우라면 그 부분만 main 큐에 보내야한다. 다운로드 로직은 다른 큐에서 처리를 하고 이미지를 화면에 표시하는 작업은 Main 큐로 보내서 실행해야한다. 하나의 작업 안에서 다른 큐로 작업을 보낼 수 있다. urlSession의 dataT..
목차 1. 메인큐 2. 글로벌큐 3. 커스텀큐 4. 오퍼레이션 작업의 특성에 따라서 원하는 큐로 보내면 된다. 각 큐가 어떤 식으로 일을 처리하는 지 알고 있으면 좋다. 메인 큐 유일한 한개 직렬큐(시리얼큐) 메인스레드 이용 1번 스레드는 메인 스레드이자 메인큐이다. `DispatchQueue.main.async { }` 처럼 사용 이런 식으로 사용하는데 메인쓰레드에서 사용한다. 예를 들어 우리가 일반적으로 사용하는 명령들은 모두 원래는 이렇게 사용하고 있었다. Swift의 기본 코드는 기본적으로 메인 스레드에서 동작한다. 하지만 명시적으로 저렇게 선언하면 에러가 나는데, 그 이유는 다음에 이야기 // 원래 사용하는 방식 print("print something") // Swift가 내부적으로 처리하는 ..
직렬 큐는 단 하나의 스레드로만 보낸다.(Serial) 동시 큐는 다른 여러개의 스레드로 보낸다. (Concurrent) 직렬큐는 왜 필요할까? 순서가 중요한 작업을 처리할 때 사용 동시 큐는 언제 사용할까? 동시 큐는 각자 독립적이지만 유사한 여러개의 작업을 처리할 때 사용 셀마다 이미지를 불러오는 작업이 동시적으로 처리가 될 수 있다. 비동기와 동기 비동기(Async) 작업을 다른 스레드에서 하도록 시킨 후, 그 작업이 끝나길 기다리지 않고 다음일을 진행한다.(안기다리고 다음 작업을 생성) 동기(Sync) 작업을 다른 스레드에서 하도록 시킨 후, 그 작업이 끝나길 기다렸다가 다음 일을 진행한다. (기다렸다가 다음 작업 생성) 직렬 큐와 ..