C#์ Task๋ ์์๋ก ์ค๋ ๋๋ฅผ ๋ง๋ค๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋๋ฐ
๋งต ํ์ผ์ ๋ช ์ด ๊ฑธ๋ ค์ ์ฝ๊ณ ์๋๋ฐ ๋ก๋ฉ ์์ด์ฝ์ด ๋ฑ ๊ธ๋ฑ ๊ธ ๋๊ฒ ํ๊ณ ์ถ์ ๋
์น์์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ฐ์ ๋ (์ด๊ฑด ์ฌ์ค ์ ๋ํฐ๊ฐ ์ฝ๋ฃจํด์ผ๋ก ์ ๊ณตํด์ฃผ๊ธด ํ์ง๋ง)
๋ฑ๋ฑ๊ณผ ๊ฐ์ ์ํฉ์ ์์ฉํ ์ ์์ด
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ ์ฌ์ฉํ๋ ํค์๋๊ฐ async๋ await์
์๋๋ 1์ด๋ง๋ค i๋ฅผ ์ฆ๊ฐ์ํค๊ณ result์ ๋์ ํ๋ ๊ฑธ 10์ด๊ฐ ๋ฐ๋ณตํ๋ ์ฝ๋์ผ.
1์ด๋ง๋ค ํ ๋ฒ์ฉ ๋ก๊ทธ๊ฐ ์ฐํ๋๋ฐ ๊ทธ๋ฌ๋ ์์ค์ Update()๋ ์ ์์ ์ผ๋ก ํธ์ถ๋จ.
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์ฃผ์์ด ์ถ๋ ฅ๋จ
1. Run() invoked in Start()
2. Run() returns
3. 0 ~ 9 ๊น์ง ์ซ์. ๊ทธ๋ฆฌ๊ณ ๋ฌด์ํ Update()
4. Result : 45
๋ณด๋ฉด์ Run() ํจ์๋ ๋ฐ๋ก ๋ฆฌํด๋๊ณ ๋ค ์ด์ด์ 0~9 ๊ฐ ์ถ๋ ฅ๋จ
๊ทธ๋ฆฌ๊ณ Update() ๋ ๊ณ์ํด์ ์ถ๋ ฅ๋๊ณ .
๋ค์๋งํ๋ฉด i๋ฅผ ์ฆ๊ฐ์ํค๋ ๋ถ๋ถ์๋ ๋งต ๋ก๋ฉ์, Update ํจ์์๋ ๋ก๋ฉ ์์ด์ฝ์ ๋ฑ ๊ธ๋ฑ ๊ธ ๋๋ฆฌ๋ฉด ๋๋๊ฑฐ์ผ.
https://chickeningot.github.io/unity-async/
๋ ์์ธํ ์์ ๋ ๋ด ๋ธ๋ก๊ทธ์ ์์
์ฝ๋ฃจํด์ด๋ ๋๊ฐ์๋ฐ ์ด๊ฑธ ์ฐ๋ ์ด์ ๊ฐ ๋ญ์?
์ฝ๋ฃจํด์ ๋น๋๊ธฐ๊ฐ ์๋ ๋ด๊ฐ ์ง์ yield ๋ฅผ ํด์ค์ผ ์ ๋ํฐ ๋ฉ์ธ ๋ก์ง๋ค์ด ์งํ๋จ. ๊ทธ ์ ์ ๊ณ์ block ์ํ์. ์ฌ์ด์๋ก ์ฝ๋ฃจํด ๋ด์์ while (true){ } ํด๋์ผ๋ฉด ์ ๋ํฐ๊ฐ ๋ป์๊ฑฐ์. ํ์ง๋ง ์ค๋ ๋๋ ๊ทธ๋ ์ง ์์ - dc App
์ ์ ์์ ๋ ํธ์ถ๋ ํจ์์ ๋์ผ์ค๋ ๋์์ ์งํ๋๋ค๋๊น ์ฑ๋ฅ์์ผ๋ก ์๋ฌด ์ฐจ์ด์๋๊ฑฐ์ง?
์ฑ๋ฅ ๋น๊ตํ๊ธฐ์ ์ข ์ ๋งคํ๋ฐ ์ฝ๋ฃจํด์ด๋ ์ค๋ ๋๋ ์๋ก ๋์ฒด์ ๊ด๊ณ๊ฐ ์๋์ผ. ์ด๊ฑธ ์ธ ๋๋ ์๊ณ ์ ๊ฑธ ์ธ ๋๋ ์๋๊ฑฐ์.
Unirx ๊ฒฝ๋ํ๋ฒ์ ์ด๋ ์ฑ๋ฅ ๋น๊ต ๋ถํ ๋๋ฆฝ๋๋ค
์ค ์ข์๊ฑฐ ์์๊ฐ ใณ
unirx๋ ์๊ฐ ์ปจํธ๋กคํ๊ธฐ ํธํ๋ ค๊ณ ์ฐ๋๊ฑฐ๋ผ ๋ชฉ์ ์ด ๋ค๋ฅด๋ค๊ณ ๋ด์ผ์ง...
unirx ์ฃผ์ธ์ฅ์ด ์ ๋ํฐ์ฉ ๊ฒฝ๋ํ ๋ฒ์ async / await ๋ฅผ ๊ฐ์ด ๋ฌถ์ด๋จ์ด... ๊ทธ๋ฆฌ๊ณ Rx๋ ๋ชจ๋ ๊ฒ์ ์ต์ ๋ฒ๋ธ๋ก ๋ณด๋ ๊ฑฐ๊ณ , ์๊ฐ ์ปจํธ๋กค์ ๋ถ๋ถ์ ์ง๋์ง ์์
์ฝ๋ฃจํด์ ๋๊ธฐ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉํฐ์ค๋ ๋๋ฅผ ์ง์ํ์ง ์๊ณ ๋์ ๋ด๋ถ๋์๋ค์ ๋ฉํฐ์ค๋ ๋๋ก ์ฒ๋ฆฌํ๋ค. ์ฌ์ฉ์ ์์๋ก ๋ง๋ ์ค๋ ๋์ ์์ ์ฑ์ ์์์ ์ฑ ์์ ธ์ผํจ
vs ๋ฒ์ ๋ญ์ ? ๋ญ ๊น๊ฑฐ์ผ? ์๊ฐ์ด ์ด์๋
dracula ๋ผ๋ ํ ๋ง ์ ํ ๊ฑฐ - dc App
ECS, ์ก์์คํ ์๋ฉด ๋ ์ข์ - dc App
๊ณ ๋ผ Thread.Sleep์ ๋ธํ ํ์ ๋ฃ์ผ๋ฉด ํ๋ ์๋ง๋ค ๋๋ ๊ฑฐ์ง?
์ฐ๋ ๋์ sleep์ ํด๋น ์๊ฐ๋งํผ ํด๋น ์ฐ๋ ๋๋ฅผ ์ฌ๊ฒ ํด์ฃผ๋๊ฑฐ๋ค.