Global, Static ๋ณ์์ ๋ํด ์ฌ์ฉ์์ ์ด๊ธฐํ ๋๋ ๋ฐฉ๋ฒ
eager
- ์ฑ ์์์ ์์ฑ๋จ
- ์ฅ์
- ๋จ์ํ๋ค.
- data race ๋ฌธ์ ์๋ค.
- ๋จ์
- ์ด๊ธฐ ๋ก๋ฉ์ ๋๋ฆฌ๋ค.
lazy
- ์ฌ์ฉ์์ ์ด๊ธฐํ๋จ
- ์ฅ์
- ์ด๊ธฐ ๋ก๋ฉ์ ํ์์๋ ๊ฒ๋ค์ ๋ก๋ฉํ์ง ์์ ๋น ๋ฅด๋ค.
- ๋จ์
- Data race๋ฅผ ๋ฐ์์ํฌ ์ ์๋ค.
- ์ด๋ ์ค๋ ๋์์ ์ด๊ธฐ์ ๊ทผํ์ฌ ์์ฑ๋ ์ง ์์๊ฐ ์๋ค.
- ์์ฑ๋๋ ์ค๋ ๋๊ฐ 2๊ฐ์ด์์ธ๋ฐ, ๋์์ ์ ๊ทผํ๋ค๋ฉด crash๋ค.
Apple์์๋..
- C, Objective C โ eager initialization
- Swift โ lazy initialization
Data race ๋ฌธ์ ๋ ์ด๋ป๊ฒ ํด๊ฒฐ?
- ๋๊ฐ ์ด์์ ์ค๋ ๋์์ ๋์์ ๊ทผ ํ ๊ฒฝ์ฐ
- ํ๋์ ์ค๋ ๋์์๋ง ์ด๊ธฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
- ๋ค๋ฅธ ์ค๋ ๋์์๋ blockํ๊ณ , ๋๊ธฐํ๋ค.