일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 앨런
- core data
- 동시성
- Linked List
- Swift
- Apple Developer Academy
- SwiftUI
- 상호배제
- IOS
- deadlock
- 운영체제
- async
- 100 days of SwiftUI
- @state
- 비동기
- scrollview
- forEach
- 인프런
- Algorithm
- UserDefaults
- 프로세스 스케줄링
- 가상 메모리
- 데드락
- 알고리즘
- 오브젝트
- COLOR
- decode
- 동기화
- Codable
- struct
- Today
- Total
목록CS/동시성 (13)
기어가더라도 제대로
직렬 큐는 단 하나의 스레드로만 보낸다.(Serial) 동시 큐는 다른 여러개의 스레드로 보낸다. (Concurrent) 직렬큐는 왜 필요할까? 순서가 중요한 작업을 처리할 때 사용 동시 큐는 언제 사용할까? 동시 큐는 각자 독립적이지만 유사한 여러개의 작업을 처리할 때 사용 셀마다 이미지를 불러오는 작업이 동시적으로 처리가 될 수 있다. 비동기와 동기 비동기(Async) 작업을 다른 스레드에서 하도록 시킨 후, 그 작업이 끝나길 기다리지 않고 다음일을 진행한다.(안기다리고 다음 작업을 생성) 동기(Sync) 작업을 다른 스레드에서 하도록 시킨 후, 그 작업이 끝나길 기다렸다가 다음 일을 진행한다. (기다렸다가 다음 작업 생성) 직렬 큐와 ..
비동기 작업을 다른 스레드로 보내서 처리를 하는데, 보내는 즉시 원래 스레드로 리턴한다. 1번 작업이 오래걸리더라도, 그 일이 끝나던지 말던지 2번 작업으로 갈 수 있다. DispatchQueue.global().async { } 원래 작업이 진행되고 있던 곳(메인스레드)에서 디스패치 글로벌 큐로 보낸 작업을 안기다린다. 동기 1번 작업이 끝날 때까지 메인 스레드를 막고 기다린다. 다른 큐에 보내는 것 같지만 실질적으로 처리는 메인 스레드에서 진행한다. DispatchQueue.global().sync { } 원래 작업이 진행되고 있던 곳(메인스레드)에서 디스패치 글로벌 큐로 보낸 작업을 동기적으로 기다린다. 위에 task1,2,3() 메서드들은 시작 - 완료 사이에 `s..
iOS 에서 제공하는 두가지 작업 대기열이다. 직접적으로 쓰레드를 관리하지 않고, "큐(Queue)" (대기열/대기행렬)라는 개념을 이용해 작업을 분산처리 GCD / Operation 을 사용해 시스템에서 알아서 쓰레드 숫자를 관리함 쓰레드 보다 더 높은 레벨/차원에서 일을 한다고 보면됨? 오래걸리는 작업들이 비동기적으로 작업하도록 만들어준다. DispatchQueue "큐에 보낸다" 라는 뜻 클로저 안에 들어가는 코드는 작업(Task)의 한 단위 이다. 하나의 테스크 안에선 순차적으로 작업 // 선언하지 않고 큐를 사용 DispatchQueue.global().async { // 큐에 보낼거야.글로벌큐에.비동기적으로 // task here } // 선언하여 큐를 사용 let queue = D..