ํ์ ์ข ๋ฅ
(๋๊ธฐ์ด์ ์ข ๋ฅ๊ฐ ์ฌ๋ฌ๊ฐ๋ผ๋ ๋ป, ๋ค๋ฅธ ํน์ฑ์ ๊ฐ์ง๊ณ ์์, ์์ ์ ๋ฐ๋ผ ์ํ๋ ํ๋ก ๋ณด๋ด๊ธฐ)
- ๋์คํจ์นํ(Dispatch Queue)
- (๊ธ๋ก๋ฒ) ๋ฉ์ธ ๋์คํจ์นํ
- ๊ธ๋ก๋ฒ ๋์คํจ์นํ
- ํ๋ผ์ด๋น(์ปค์คํ ) ๋์คํจ์นํ
- ์คํผ๋ ์ด์ ํ(Operation Queue)
์ํ๋ ํ๋ก ์์ ์ ๋ณด๋ด๋ฉด ๊ฐ ํ๊ฐ ์์์ ๊ฐ์ ๋ค๋ฅธ ์ฐ๋ ๋๋ฅผ ์์ฑํ๊ณ ์ผ์ ์ฒ๋ฆฌํ๋ค!
1. ๋ฉ์ธ ๋์คํจ์น ํ
- ์ ์ผํ ํ๊ฐ
- ์ง๋ ฌ(Serial) ๋์
- ๋ฉ์ธ์ฐ๋ ๋ ( 1๋ฒ ์ฐ๋ ๋๋ ๋ฉ์ธ ์ฐ๋ ๋์ด์ ๋ฉ์ธํ์ด๋ค.)
DispatchQueue.main.async
๋ฉ์ธ ์ฐ๋ ๋๋ก ๋ณด๋ธ๋ค๋ ๋ป
๊ทธ๋ฅ print(”print something”)์ฝ๋๋ง ์์ ๋ ์ฌ์ค ์๋ฏธ์ ์ผ๋ก๋ DispatchQueue.main.sync ์์ ๋ค์ด์๋ ๊ฒ๊ณผ ๊ฐ์ ์๋ฏธ์ด๋ค.
( ํ์ง๋ง ์ง์ง ์ด๋ ๊ฒ ์ง์ ์จ์ ์์ ๋ฃ์ผ๋ฉด ์ค๋ฅ๋จ→๋ค์์ ์ค๋ช )
2. ๊ธ๋ก๋ฒ ๋์คํจ์น ํ
- QoS(Quality of Service)์ ๋ฐ๋ผ ์ฌ์ฏ๊ฐ์ง๋ก ๋๋จ
- ๊ธฐ๋ณธ ์ค์ ์ Concurrent(์ฌ๋ฌ๊ฐ์ ์ฐ๋ ๋๋ก ๋ถ์ฐ์ฒ๋ฆฌํด์ ์ผ์ ์ฒ๋ฆฌ ํจ)
DispatchQueue.global().async
์์์๋ถํฐ ์๋๋ก ๊ฐ์๋ก ๋ ์ค์ํ ์ผ
- DispatchQueue.global(qos: .userInteractive) : ์ ์ ์ ์ง์ ์ ์ธํฐ๋ ํฐ๋ธ(UI์ ๋ฐ์ดํธ, ์ ๋๋ฉ์ด์ , UI๋ฐ์ ๊ด๋ จ ์ด๋ค ๊ฒ์ด๋ (์ฌ์ฉ์์ ์ํธ ์์ฉ)), ๊ฑฐ์ ์ฆ์
- DispatchQueue.global(qos: .userInitiated) : ์ ์ ๊ฐ ์ฆ์ ํ์๋ก ํ๊ธด ํ์ง๋ง, ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ ๋ ์์ (ex. ์ฑ๋ด์์ pdf๋ฅผ ์ฌ๋ ๊ฒ๊ณผ ๊ฐ์), ๋ช ์ด
- DispatchQueue.global() : ๋ํดํธ, ์ผ๋ฐ์ ์ธ ์์
- DispatchQueue.global(qos: .utility) : ๋ณดํต Progress Indicator์ ํจ๊ป ๊ธธ๊ฒ ์คํ๋๋ ์์ , ๊ณ์ฐ, IO, Networking, ์ง์์ ์ธ ๋ฐ์ดํฐ feeds, ๋ช์ด์์ ๋ช๋ถ
- DispatchQueue.global(qos: .background): ์ ์ ๊ฐ ์ง์ ์ ์ผ๋ก ์ธ์งํ์ง ์๊ณ (์๊ฐ์ด ์์ค์ํ) ์์ , ๋ฐ์ดํฐ ๋ฏธ๋ฆฌ๊ฐ์ ธ์ค๊ธฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ง, ๋ช๋ถ์ด์(์๋๋ณด๋ค๋ ์๋์ง ํจ์จ์ฑ ์ค์)
- DispatchQueue.global(qos: .unspecified) : legacy API
์์ ์ QoS๊ฐ queue์ QoS๋ณด๋ค ๋์ ๋
→ ์๋์ผ๋ก Queue์ ์ฐ์ ์์๋ ์์ ์ ์ฐ์ ์์๋ฅผ ๋ฐ๋ผ์ ๋์์ง.
.background์์ .utility๋ก ๋ฐ๋
3. ํ๋ผ์ด๋น ๋์คํจ์น ํ
- ๋ํดํธ๋ ์ง๋ ฌ(Serial). ์ํ๋ฉด Concurrent ์ค์ ๊ฐ๋ฅ, Qos ์ค์ ๋ ๊ฐ๋ฅ\
- QoS๋ฅผ ์ค์ ํด์ฃผ์ง ์์๋ iOS๊ฐ ์์์ ์ถ๋ก
๋ํดํธ๋ serial ์ด์ง๋ง , ์ธ์๋ฅผ ๋ฃ์ด attributes๋ฅผ concurrent๋ก ์ค์ ๊ฐ๋ฅ
Queue ๋ถ๋ฅํ
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] SnapKit๊ณผ Then ์ฌ์ฉํ๊ธฐ (0) | 2023.03.29 |
---|---|
[Xcode] Failed to prepare device for development ์๋ฌ (0) | 2023.03.16 |
[iOS] ์ ์ค์ณ๋ก ๋๋ก ์กฐ์ข ํ๋ AI์ฑ ๋ง๋ค๊ธฐ (1) - ํ๋ก์ ํธ ๊ตฌ์กฐ์ MediaPipe์์ ๊ณ ๋ (0) | 2023.02.22 |
[iOS] pod init ์ค๋ฅ ์ ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2023.02.17 |
[iOS] ์ปค์คํ ํฐํธ ์ถ๊ฐ ๋ฐฉ๋ฒ (0) | 2023.02.16 |