C# ๊ณต๋ถํ์ง 2๋ฌ ๋ ๋ด๋น์ธ๋ฐ ์ง๋ฌธ์ด ์์ด
Task๊ฐ ๋น๋๊ธฐ ์์ ํ๋๋ฅผ โ์์ ๋จ์โ๋ก ํํํ๋ค๋ผ๊ณ ํ๋๋ฐ ์ค์ ๋ก thread๋ OS์ ์ํด์ ๋๊ธฐ๋ก ๋๊ณ , async/await๋ ๋๊ธฐ๋ก ๋์๊ฐ์์.
์ฌ๊ธฐ์ ๊ทธ ๋๊ธฐ๋ก ๋์๊ฐ๊ฒ ํ๊ธฐ ์ํด์ Task๋ฅผ ์ด๊ฑฐ ์๋์ผ? ๊ทผ๋ฐ ์ ์๊พธ ๋น๋๊ธฐ๋ผ๊ณ ํํํ๋์ง ๋ชจ๋ฅด๊ฒ ์ด.
gptํํ ๋ช ๋ฒ ๋ฌผ์ด๋ด๋ ๋น๋น ๋๋ ค์ ๋งํด์ ์ฝ๊ฒ ์ค๋ช ํด์ฃผ์ค ๋ถ ์์ด?
ใ ?ใน ์ ๋ํฐ C#์ด๋ฉด ํ์คํฌ๋ฅผ ์ธ ์ผ์ ์์ํ ๋ฐ ๋ฐ๋ก ์ธ๋ฐ๊ฐ ์์ด์ ๋ฐฐ์ฐ์๋ ๊ฑด๊ฐ
async/await ๋ฐํ ํ์ ์ Task, Task๋ฅผ ๋ง์ด ์ฐ์ง ์๋์? void๋ ์ํํด์ ์ ์์ฐ๊ตฌ์... gpt๋ฅผ ๋ค๋ค ๋ณถ์ ๊ฒฐ๊ณผ .Task๊ฐ '๋น๋๊ธฐ ์์ '์ ํํ์ด๋ผ์ ๊ทธ๋ ๊ฒ ์ค๋ช ํ๋ค๋ค์.
@๊ธ์ด Indie(119.194) UniTask๋ฅผ ์ฐ๊ณคํด์ฌ ์ผ๋ฐ Task๋ MonoBehaviour๋ ์ฐ๊ธฐ ์ด๋ ค์ด ๊ฑธ๋ก ์๊ณ ์์ด์ฌ
https://learn.microsoft.com/ko-kr/dotnet/csharp/asynchronous-programming/
await๋ ํ์ฌ ์์ ์ ํด๋น await๊ฐ ๋ฐํ ๋ผ์ธ์์ ์ผ์ ๋ฉ์ถ๊ณ , ๋ค๋ฅธ ์ผ์ ํ๋ค์ ๋ค์ ํธ์ถ๋๋ฉด ํด๋น๋ผ์ธ์์ ์์ ์ ํ๋ "๋น๋๊ธฐ์" ๋ฐฉ์์. ์๋ก ๋ค๋ฅธ ์์ปค์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ณ ์ด๋ฅผ ์ฑํฌ๋ก ํ๋ ๊ณผ์ ์ด ์๋๋ ์ด์ผ๊ธฐ์.
๊ทธ ๋น๋๊ธฐ์์ ๋ฉ์๋๋ ํ๋ก๊ทธ๋๋ฐ ์ ์ฒด์ ๊ด์ ์ด์ง ์ค์ ๋์๊ฐ๋ ๊ณผ์ ์ ์ ํ ๋น๋๊ธฐ์ ์ผ๋ก ๋์๊ฐ์ง ์๊ณ ๋๊ธฐ์ ์ผ๋ก ๋์๊ฐ์ง ์๋์? ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ๋งํ๋ ๋๊ธฐ๋ ๋ฐ์ดํฐ ๋๊ธฐ๊ฐ ์๋์์.
์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์ฃ . ๋ง์ฝ ์ฌ์ฉ์๋ก๋ถํฐ io์ ๋ ฅ์ ๋ฐ๊ฑฐ๋ ํต์ ๋ฑ์ ํตํด ์๋ต์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ๊ฒฝ์ฐ ๋๊ธฐ์ ๋์์ผ ๊ฒฝ์ฐ ๋ธ๋กํน๋๋๋ฐ, ๋น๋๊ธฐ๋ก ๋์ํ๋ค๋ฉด ์ ๋ ฅ์ ๋๊ธฐํ๋ ๋์์๋ ๋ค๋ฅธ ๊ฑธ ์ฒ๋ฆฌํ ์ ์์ฃ . ์๋ฅผ ๋ค์๋ฉด ์ง์ง๋ก http ํต์ ๋ฑ์ ํ๋ ๊ฒฝ์ฐ ์๋ต์ ๊ธฐ๋ค๋ ค์ผ ํ๋๋ฐ, ๊ทธ ๋์ ํ๋ก๊ทธ๋จ์ด ๋ฉ์ถ๋ฉด ์ ๋์์์. ๊ทธ๋์ ๋น๋๊ธฐ๋ก ์๋ต์ ๋ฐ๋ ๊ฒ๋๋น. ๊ทธ๋์ผ ํ๋ฉด์ด ๋์๊ฐ๋ฉด์ ์๋ต๋ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ ๊ฑฐ์ฃ .
async๋ ๋น๋๊ธฐ๋ก ๋์์ํค๊ฒ ๋ค๋ ํค์๋๊ณ , await๋ ๋น๋๊ธฐ ๋์์ ์์ฐจ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ํค์๋๋ผ๊ณ ๋ณด์๋ฉด ์ดํดํ๊ธฐ ์ฌ์์ฉ.
@ใ ใ ์ ์ด์ ๋น๋๊ธฐ๋ผ๋ ๋ง์ด ์์๊ฐ ์๋ค๋ ๋ป์ธ๋ฐ await๋ ๋ฉ์๋์์ I/O๊ฐ ๊ธด ๋ถ๋ถ์ ์งค๋ผ๋ด ๋ค๋ฅธ ์์ ์ ํ๊ฒ ๋ค๋ ์๋ฏธ์๋๊ฐ์? ์ค์ ์ปดํ์ผ๋๋ฉด ์ํ๋จธ์ ์ผ๋ก ๋์์์,
@๊ธ์ด Indie(119.194) ๋ง๊ฒ ์ดํดํ์ จ์ด์ฉ
์ค๋ธ์ ํธ ์๋ง๊ฐ๋ฅผ ๋์์ ์ฒ๋ฆฌํ ๊ฑฐ ์๋๋ฉด ๋ฉํฐ์ค๋ ๋๋ ์ธ ์ผ์ด ์์๊ธด๋ค....๋ ์ํด๋ผ์ - dc App
๊ทธ๋์ ThreadPool์ฐ์ง ์๋์?
@๊ธ์ด Indie(119.194) ์ผ๋จ ๋ฉํฐ์ค๋ ๋๋ ๋ณ๋ ฌ ์ค๋ ๋๋ ์ค์ผ์ฅด๋ง ๋น์ฉ์ด๋ ์ค๋ ๋ ๋๊ธฐ๋ ๋น์ฉ์ด ์๋ค ๋ค์์. ์ด๊ฒ ์๊ฐ๋ณด๋ค ์ปค์ ๋ฉ์ธ์ค๋ ๋์์ ํ๋๊ฒ ๋ ์ผ ๊ฒฝ์ฐ๊ฐ ๋ง์. ์๊ณ์ ์ด, ์ค๋ธ์ ํธ ์๋ง๋จ์์. ์ด๊ฑธ ๋๊ธธ ์ ๋๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋์ด ์กด๋ ๋ง์์ผ ์ด๋์. - dc App
Task ์๋ฃํ์ ํด๋น ๋น๋๊ธฐ๋ฅผ ์์ฒญํ๊ณ ๋์ ๊ทธ ์์ ์ด ๋๋ฌ๋์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ์ถ์์ ์๋ฃํ์ธ๊ฑฐ๊ณ ๋น๋๊ธฐ๋ ์์ฒญํ๋ฉด ๋ณ๋์ ์ฐ๋ ๋๊ฐ ๋ง๋ค์ด์ ธ์ ๊ฑฐ๋ฐ๊ฐ ์คํ๋๊ณ ๊ธฐ์กด์ ์ฝ๋๋ ๋ฉ์ธ ์ฐ๋ ๋์์ ๋์
๋ I/O ๊ธฐ๋ฐ์ ๋น๋๊ธฐ๋ ์๋๋ฐ ๊ทธ๊ฑด ๋ง ๊ทธ๋๋ก ๋ค๋ฅธ ์ฅ์น์๊ฒ ์์ฒญํ๊ณ ๊ทธ ์ฅ์น๊ฐ ์๋ฃ๋์์ผ๋ฉด ๊ทธ์ ๋ฐ๋ฅธ ํธ๋ค๋ง์ ์ฐ๋ ๋ ํ์์ ๊ฐ์ ธ์์ ์ฒ๋ฆฌํจ
๋น๋๊ธฐ๋ ์์ฒญํ๋ฉด ๋ณ๋์ ์ฐ๋ ๋๊ฐ ๋ง๋ค์ด์ ธ์ ๊ฑฐ๋ฐ๊ฐ ์คํ๋๊ณ ๊ธฐ์กด์ ์ฝ๋๋ ๋ฉ์ธ ์ฐ๋ ๋์์ ๋์ ์ด๊ฑด ๋ฉํฐ์ฐ๋ ๋์๋๊ฐ์? ๋น๋๊ธฐ๋ฅผ ์จ๋ ๋จ์ผ์ฐ๋ ๋์์ ๋์๊ฐ์
๋ ธ๋ js , ์์ค ๊ฐ์ ์ฑ๊ธ ์ฐ๋ ๋ ์ธ์ด๋ ๊ทธ๋ฐ๋ฐ C#์ ์๋๋ผ๋๊ฑฐ์ง ๋น๋๊ธฐ์ ๋ด๋ถ ๋ฐฉ์์ด ์ธ์ด๋ง๋ค ๋ค ๋ค๋ฆ
@ใ ใ (58.233) C#๋ async await๋ฅผ ์ฐ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์ํ๋จธ์ ์ผ๋ก ๋ฐ๊พธ๋๊ฑฐ ์๋๊ฐ์? ์ฐ๋ ๋๋ ๊ทธ๋ฆฌ๊ณ ํ ๋ช ์ ์ผ๊พผ๊ฐ๋ ์ด๊ตฌ์
@ใ ใ (119.194) ๋ง๊ธด ๋ง๋๋ฐ ์ธ์ด๋ง๋ค ๋น๋๊ธฐ ๊ตฌํ์ด ๋ค ๋ค๋ฅด๊ณ ๋ C#๋ ๋น๋๊ธฐ๊ฐ ํ๋ซํผ๋ง๋ค ๋ค ๋ฌ๋ผ์ ์ด๊ฑด ์ด๊ฑฐ๋ค! ์ ๊ฑด ์ ๊ฑฐ๋ค! ๋ผ๊ณ ๋จ์ ์ง์ ์ ์๋๊ฑฐ๊ธด ํจ ๋ด๊ฐ ์์ ๋งํ ๊ฒ๋ ์ค๋ช ํ๋ ค๊ณ ์ผ๋ฐํํ๊ฑฐ๊ธด ํ๋ฐ ๊ฑ ํธ์ถํ ์ฐ๋ ๋๋ฅผ ๋ ผ๋ธ๋ฝํนํ๋ค ์ด๋ฐ ์์ผ๋ก ์์๋ ๋ฌธ์ ๋ ์์๊ฑฐ ๊ฐ์๋ฐ?
@ใ ใ (119.194) async await๋ ๋ฉ์๋๋ฅผ ์ชผ๊ฐ์ ์ฐ๋๊ฑฐ๊ตฌ์ ์ด๊ฑธ ์ฐ๋ ๋๊ฐ ๋ค๋ฃจ๊ตฌ์. ๊ทธ๋ผ ๋ฉ์๋๋ฅผ ์ ์ง๋ฅด๋? I/O ์๊ฐ์ด ๊ธด ๋์๋๋ฌธ์ด๊ตฌ์.
๋ด๋ถ์์ ์ด๋ป๊ฒ ์ง์ง๊ณ ๋ณถ๋ ๋ฐ์์ ๋น๋๊ธฐ๋ก ๋ณด์ด๋ฉด ๋น๋๊ธฐ ์๋๊ฐ์??? - dc App