❗️스레드 = 흐름
❗️ 멀티 스레드의 경우 '임계구역'을 조심해야한다!!!!
⭐️ 선입선출(FIFO) 구조
let serialQueue = DispatchQueue(label: "label")
serialQueue.sync{
}
DispatchQueue.main.sync {
}
let CQueue = DispatchQueue(label: "label", attributes: .concurrent)
DispatchQueue.global().async {
}
DispatchQueue.global(qos: .userInteractive) {} //Main Queue
DispatchQueue.global(qos: .userInitiated) {} //유저가 시작한 작업, 유저가 응답을 기다림
DispatchQueue.global(qos: .default) {} //userInitiated와 utility의 중간
DispatchQueue.global(qos: .utility) {} //시간이 걸리며 즉각적인 응답이 필요하지 않은 경우
DispatchQueue.global(qos: .background) {} //눈에 보이지 않는 부분의 작업. 완료 시간 중요X
DispatchQueue.global(qos: .unspecified) {}
//우선순위 순
@IBOutlet weak var firstView: UIView!
@IBOutlet weak var secondView: UIView!
let colorList: [UIColor] = [ .red, .blue, .systemPink, .brown, .purple, .cyan, .darkGray, .black ]
override func viewDidLoad() {
super.viewDidLoad()
// TODO: - thread 주기
// main -> UI 담당
// Frist view
DispatchQueue.global().async {
for color in self.colorList {
DispatchQueue