-
[iOS] UMC iOS 세미나 6주 차iOS/UMC 2022. 10. 31. 23:14
Thread
(이야기 등의)가닥[맥락], 프로세스의 흐름, 프로세스의 내부에 속함, 프로세스의 시작과 종료 담당
💡프로세스(실행 중인 프로그램) 개념도 필요!
프로그램 안에서 스레드들이 각자 역할을 정해서 분담 -> 수행
하나의 프로세스 안에는 최소 1개의 스레드가 존재하게 된다.
Multi-Thread
일만 분배하고, 줄어들지는 않기 때문에 분배를 하기 전과 후의 걸리는 시간은 같음
작업의 순서를 가질 수 있음 (ex. 파일 B를 다운받으려면 파일 A가 필요한 경우 작업의 순서 필요)
Thread
- 프로세스 내에서 실행되는 흐름의 단위
- Multi-Thread를 통해 Thread들이 각각 독립적인 흐름을 가질 수 있음(일의 능률과는 거리가 멀다. 단순히 분배만 할 뿐)
- 공유 자원에 동시 접근하여 생기는 문제를 방지하기 위해 Lock을 활용함Dispatch Queue를 활용해서 Multi-Thread를 구현할 수 있다!
Main Thread: DispatchQueue.main -> Ui 작업
background Thread: DispatchQueue.global() -> Ui 작업 외의 모든 작업
// // ViewController.swift // Week5 // // Created by yeonsu on 2022/10/31. // import UIKit class ViewController: UIViewController { @IBOutlet weak var firstView: UIView! @IBOutlet weak var secondView: UIView! var colorList: [UIColor] = [ .blue, .brown, .clear, .cyan, .darkText, .gray, .lightText, .red, .yellow, .green ] override func viewDidLoad() { super.viewDidLoad() threadTest() colors() } func threadTest() { // DispatchQueue.main // Ui 작업 관련 // 단일 Thread. 1-10까지 출력 // 일을 여러 개의 스레드로 나누어서 처리 // 동기 방식(sync): Ui 외 모든 작업 관련, 차례대로 수행 // 비동기 (async): 다른 작업의 스레드가 끝나는 걸 기다리지 않고 같이 수행, 실행할 때마다 처리 순서가 달라짐 /* DispatchQueue.global().async { for i in 1...10 { print(i) sleep(1) } } DispatchQueue.global().async { for i in 11...10 { print(i) sleep(1) } */ DispatchQueue.global().async { for color in self.colorList { DispatchQueue.main.sync { self.firstView.backgroundColor = color } sleep(1) } } DispatchQueue.global().async { for color in self.colorList.reversed() { DispatchQueue.main.sync { self.secondView.backgroundColor = color } sleep(1) } } } } func colors() { }
'iOS > UMC' 카테고리의 다른 글
[iOS] UMC iOS 세미나 7주 차 (0) 2022.11.07 [iOS] 6주 차 미션 (0) 2022.11.05 [iOS] 4-5주 차 미션 (0) 2022.10.31 [iOS] UMC iOS 세미나 5주 차 (0) 2022.10.31 [iOS] UMC iOS 세미나 4주 차 (0) 2022.10.27