본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다.
wait()/notify(queue:)
wait()의 경우 synchronous하게 동작하고, notify의 경우 asynchronous하게 동작한다.
wait()
이전에 제출된 업무들이 끝나길 기다리는 메서드이다.
wait()을 사용한 코드는 다음과 같다:
import Foundation
struct Printer {
func printNumbersOne() {
let group = DispatchGroup()
let count = 10
DispatchQueue.global().async(group: group) {
for number in 1...count {
print(number*2 - 1)
}
}
DispatchQueue.global().async(group: group) {
for number in 1...count {
print(number*2)
}
}
group.wait()
print("숫자 출력 끝!1")
}
}
let printer = Printer()
printer.printNumbersOne()
notify(queue:)
현재 그룹의 모든 일들이 끝났을 때 큐에게 할 일들의 블록을 넘겨준다.
notify(queue:)을 사용한 코드는 다음과 같다:
import Foundation
struct Printer {
func printNumbersTwo() {
let group = DispatchGroup()
let count = 10
DispatchQueue.global().async(group: group) {
for number in 1...count {
print(number*2 - 1)
}
}
DispatchQueue.global().async(group: group) {
for number in 1...count {
print(number*2)
}
}
group.notify(queue: DispatchQueue.global()) {
print("숫자 출력 끝!2")
}
}
}
let printer = Printer()
printer.printNumbersTwo()
'YAGOM CAREER STARTER' 카테고리의 다른 글
[TIL] 20230317: Responder Chain / Touch Event (0) | 2023.03.18 |
---|---|
[CODE STARTER 복습] 20230317: week01 (0) | 2023.03.17 |
[토요스터디A반] 20230311: Protocol Oriented Programming (0) | 2023.03.13 |
[TIL] 20230309: Sync/Async/Blocking/Non-Blocking (0) | 2023.03.09 |
[TIL] 20230307: 동기/비동기/직렬/동시성, DispatchQueue (0) | 2023.03.07 |