์๋ ํ์ธ์ Foma ์ ๋๋ค!
์ค๋ ์์๋ณผ ์ฃผ์ ๋ GCD(Grand Central Dispatch)์ ๋๋ค.
๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค.
Multi Threading
๋จผ์ GCD ๋ฅผ ์๊ธฐ ์ํด์ ๋ฉํฐ์ฐ๋ ๋ฉ ์ด๋ผ๋ ๊ฐ๋ ์ ์๊ณ ์์ด์ผํฉ๋๋ค.
์๋ํ๋ฉด GCD ๊ฐ ์ ํ์์ ์ ๊ณตํ๋ API์ธ๋ฐ ์ด๊ฒ์ ๋ฉํฐ์ฐ๋ ๋ฉ ์ฒ๋ฆฌ๋ฅผ ์ฝ๊ณ ํธํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฉํฐ์ฐ๋ ๋ ๋ ์ฌ๋ฌ๊ฐ์ ์ฐ๋ ๋๊ฐ ๋์์ ์งํ๋๋ ๊ฒ์ธ๋ฐ์.
์ ๋ฉํฐ์ฐ๋ ๋ ๊ฐ ํ์ํ ๊น์?
๋ณดํต์ ์์ ๋ค์ ๋ํ์ ์ผ๋ก UI๊ด๋ จ ์์ ๋ค์ ๋ฉ์ธ์ฐ๋ ๋์์ ์งํ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์์ ๋ค์ ๋๋ถ๋ถ ์์ฐจ์ (sync)์ผ๋ก ์ด๋ฃจ์ด์ ธ์์ฃ .
ํ์ง๋ง ์์์์ด ๋์(async)์ ์ด๋ค์ ธ์ผ ํ ๊ฒ๋ค์ด ์์ฃ ?
์๋ฅผ ๋ค๋ฉด ์ด๋ฏธ์ง ๋ค์ด๋ก๋๊ฐ์ ๊ฒฝ์ฐ ๋์์ ๋ค์ด๋ก๋ฉ์ ์์ํด์ ๋จผ์ ๋๋ ์ด๋ฏธ์ง๋ ๋จผ์ ๋ค์ด๋ก๋ ๋๋๋ก ํด์ผํ ๊ฑฐ์์.
๋ง์ฝ ์์ฐจ์ ์ผ๋ก ์งํํ๋ค๋ฉด ์์ฃผ ํฐ ์ฉ๋์ ์ด๋ฏธ์ง๊ฐ ์ ์ ์๋ค๋ฉด ๋ค์ ์ด๋ฏธ์ง๊ฐ ์งํ์กฐ์ฐจ ๋์ง ์๊ฒ ์ฃ .
๋ ๋ค๋ฅธ ์๋ ์ธ์คํ๊ทธ๋จ์ธ๋ฐ์. ์ธ์คํ๊ทธ๋จ์์ ๋ง์ฝ ์ด๋ค ์ ์ ๊ฐ ํฌ์คํธ๋ฅผ ์ฌ๋ ธ๋๋ฐ ๊ทธ๊ฒ ํ๋ฉด์ ๋ฐฐ์น๋ ๋๊น์ง
ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ์ ์ ๊ฐ ๊ธฐ๋ค๋ ค์ผ ํ๋ค๋ฉด ๊ทธ ์ ์ ๋ ๋์ด์์ด ๊ธฐ๋ค๋ ค์ผ ํ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฉ์ธ์ฐ๋ ๋๊ฐ ์๋ ๋ ๋ค๋ฅธ ๊ณณ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ ๊ทธ๋์ ๋ฉ์ธ์ฐ๋ ๋์์๋ ์ ์ ๊ฐ ์ฑ์ ์ฌ์ฉํ ์
์๋๋ก ํด์ผํ ๊ฒ์ ๋๋ค.
Dispatch Queue
๊ทธ๋ ๋ค๋ฉด GCD ๊ฐ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํด์ค๊น์?
GCD ์๋ DispatchQueue๊ฐ ์์ต๋๋ค.
์ด DispatchQueue ๋ ๊ณต์ ๋ฌธ์์ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋์ด ์์ต๋๋ค.
ํด์ํ์๋ฉด "์ฑ์ ๋ฉ์ธ์ค๋ ๋ ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ์์ ์คํ์ ์์ฐจ์ ๋๋ ๋์์ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์ ๋๋ค." ๋ผ๊ณ ๋์ด์๋ค์.
Dispatch Queue๋ 2๊ฐ์ง ํ๊ฐ ์๋๋ฐ์.
์์ฐจ์ ์ผ๋ก ์์ ์ ์คํํ๋ Serial Dispatch Queue ๊ฐ ์๊ณ (์์ฐจ์ ์ผ๋ก ์์ ์ ํ๋ค๋ ์๋ฏธ๋ Queue์์์ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค๋ ๋ป์ ๋๋ค.)
๋์์ ์์ ์ ์งํํ๋ Concurrent Dispatch Queue ๊ฐ ์์ต๋๋ค.
์ด ๋๊ฐ์ ํ๋ ๋ค๋ฅธ ๋ง๋ก๋ Main Queue๊ณผ Global Queue์ด๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํฉ๋๋ค.
MainQueue
์ฐ์ ๋ฉ์ธํ๋ ์์คํ ์๋์ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฉ์ธํ์์ ์ฐ๋ฆฌ๋ ๋๊ฐ์ ์์ ์ ์งํํ์ฃ .
๋ณดํต์ ์์ฐจ์ ์ผ๋ก ์์ ์ด ์งํ๋ฉ๋๋ค.
UI๊ด๋ จ ์์ ์ ์ด ๋ฉ์ธํ์์ ๋ฌด์กฐ๊ฑด ๋์๋์ด์ผ ํฉ๋๋ค.
Global Queue
๊ธ๋ก๋ฒํ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์ํ๋ ํ์ ๋๋ค.
๋๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์๋ ๋ฐ์ดํฐ๋ ๋คํธ์ํฌ ํต์ ๋ฑ ๋๋๋ ์๊ฐ์ ์ ํํ ์ ์ ์์ ๋
๋ฉ์ธํ์์ ๋์ํ๋ ์์ ๋ค์ ์ํฅ์ ๋ผ์น์ง ์์์ผํ ๋ ์ฌ์ฉ๋๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋๋๋ ์๊ฐ์ ์ ํํ ์ ์๊ฐ ์์ต๋๋ค.
์ด๋ฅผ ์ํด์ Qos(Quality Of Service)๋ฅผ ์ด์ฉํด ์ฐ์ ์์๋ฅผ ์ ํ ์ ์์ต๋๋ค,
Quality Of Service
Qos๋ ์๋์ฒ๋ผ ์ฐ์ ์์์ ๋ฐ๋ผ 5๊ฐ์ง๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
1.Userinteractive - ๋ฐ๋ก ์ํ๋์ด์ผ ํ ๊ฒ (๊ฐ์ฅ ์ค์ํ ๊ฒ)
2.Userintiated-Userinteractive๋ณด๋จ ๋ ์ค์ํ์ง๋ง ์ฌ์ฉ์๊ฐ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๊ฒ
3.Userdefault - ์ฐ์ ์์๋ฅผ ์ ๊ฒฝ์ฐ์ง ์๋ ๊ฒ(์ค์ํ ์ ๋๊ฐ ์๊ด์๋๊ฒ)
4.Utility - ์๊ฐ์ด ์ข ๊ฑธ๋ ค์ ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒ
5.background - ์ฌ์ฉ์ํํ ๋น์ฅ ์ธ์๋ ํ์๊ฐ ์๋๊ฒ
'๐ iOS > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Library] ReactiveX์ ๋ํด ๊ฐ๋จํ๊ฒ ์์๋ณด๊ธฐ (0) | 2020.12.24 |
---|---|
[iOS ๋ฉด์ ์ง๋ฌธ] Delegate๋ retain์ด ๋ ๊น? (0) | 2020.12.23 |
[iOS/UI] UITableView๋? (0) | 2020.12.16 |
[iOS ๋ฉด์ ์ง๋ฌธ] ์ ๋ค๋ฆญ์ด๋? (Swift Generic) (0) | 2020.12.15 |
[iOS] ํด๋์ค์ด๋ฆ ํ๋ฒ์ ๋ชจ๋ ๋ฐ๊พธ๊ธฐ (Refactor Class name) (0) | 2020.12.14 |
๋๊ธ