์ ์ฝ๋ฃจํด์์ http ํต์ ์ ํ๋๊ฑฐ์ผ??
[๐ฃ์ง๋ฌธ] ์ ๋ํฐ ์ฝ๋ฃจํด ์ฑ๊ธ์ค๋ ๋ ์๋?
์ต๋ช
(115.92)
2024-04-20 16:52
์ถ์ฒ 0
๋๊ธ 46
๋ค๋ฅธ ๊ฒ์๊ธ
-
์ธ์ฃผ ๋งก๊ธธ ๋ ํฌ.ํด๋ก ๊ฐ๋ ์๋จ? [4][๐ฌ] dryrain(dryrain1025) | 24.04.20์ถ์ฒ 1
-
์ํธ๊ตฌํจ[๐ฌ] ์ต๋ช (tomkazansky) | 24.04.20์ถ์ฒ 0
-
์ฌ๊ธฐ์ ์ฌ๋ ๊ตฌํด์ ์๋๊ผฌ๋ผ์ง๋ฅผ ๋ชป๋ดค๋๋ฐ ใ ใ [1][๐ฌ] ์ต๋ช (quiet5012) | 24.04.20์ถ์ฒ 0
-
์ปด๊ณต์ ์ทจ๋ฏธ๋ก ๊ฒ์๊ฐ๋ฐ ์ ๋ฌธํ๋ คํ๋๋ฐ [4][๐ฌ] ์ต๋ช (220.89) | 24.04.20์ถ์ฒ 1
-
์๊ฐ๋ณด๋ค ์ธ์ฃผ์์ ํ๋ฎ๊ฒ ๋์ค๋๊ฑฐ ๋ง๋๋ผ [8][๐ฌ] ์ต๋ช (222.98) | 24.04.20์ถ์ฒ 2
-
์ธ๋ฆฌ์ผ ๋ฐฐ์๋ณผ๊ป๋ฐ C++์ด๋ ค์? [10][๐ฃ์ง๋ฌธ] ์ต๋ช (39.127) | 24.04.20์ถ์ฒ 0
-
์๊ธ ์ผ๋ง ์ฃผ๋ฉด ํ์ ๊ตฌํ ์ ์์๊น? [12][๐ฃ์ง๋ฌธ] ์ต๋ช (61.75) | 24.04.20์ถ์ฒ 0
-
๊ณต๋ชจ์ ์ด๋ ์ง์์ฌ์ ๋์ ํ๋ฉด 4๊ฐ์ค 1๊ฐ๊ฐ ๋๋๊ฑฐ๊ฐ์ [2][๐ฌ] ์ต๋ช (222.98) | 24.04.20์ถ์ฒ 0
-
์ ๋ํฐ ์์ ์คํ ์ด ํ๋์ ๋ [1][๐ฌ] ์ต๋ช (211.109) | 24.04.20์ถ์ฒ 0
-
ํ or ํ์์ ์ด๋ป๊ฒ ๊ตฌํ ์ ์์๊น [13][๐ฃ์ง๋ฌธ] ์ต๋ช (61.75) | 24.04.20์ถ์ฒ 0
์ ํ๋ฉด์๋๋ค๊ณ ์๊ฐํ๋๊ฑฐ์
๋ฉ์ธ ์ค๋ ๋์์ ์ ํต์ ์ํด?? ํ๋ ์์ ํ๋์์
yield return UnityWebRequest.Get("
http://www.naver.com");
์ด๋ ๊ฒ
ํ๋ค๊ณ ํ๋ฉด, UnityWebRequest.Get์์์ ๋ณ๋ ์ค๋ ๋๋ก ๋์ํ๊ณ ์ฝ๋ฃจํด์ ๋ฆฌํดํจ.
๊ทธ๋์ yield return์์ ๊ฑธ๋ ค๋, ๋ฉ์ธ์ค๋ ๋๊ฐ ๋ฉ์ถ์ง ์์.
๋ณ๋์ค๋ ๋์์ ๋์๊ฐ๋๊ฑฐ์.
ใ ใ ใณใณ ์ด๊ฒ ๊ถ๊ธํ์. ๊ทธ๋ฅ ์ฝ๋๋ง ๋ณด๋ฉด ์ ๊ฒ๋ ๋ฉ์ธ์ค๋ ๋์์ ๋์๊ฐ๋๊ฑฐ ์๋๊ฐ?? ์์ฌํ๋๋ฐ ๋ณ๋ ์ค๋ ๋์์ ๋์ํ๋ค๊ณ ํ๋๋ฐ ์ ๊ฒ ๋ฌธ์ ์ด๋์ ๋์์๋๊ฑฐ์??
UnityWebRequest.Get ๋ ๋ธ๋ญํนํจ์๊ณ ๋ณ๋์ ์ฐ๋ ๋์์ ๋์์ํจ.
https://forum.unity.com/threads/is-unitywebrequest-threaded-to-background.514360/
๊ฐ์
์ ๋ํฐ ๊ด๊ณ์๊ฐ ์ด ๊ธ ๋ด.
UnityWebRequest is threaded under the hood, all download happens on other thread
๊ทธ๋ฆฌ๊ณ ํต์ ํ๋ ํจ์๊ฑด, ํ์ผ์ ์ฝ์ด๋ ํจ์๊ฑด ๊ฐ์, ์ฝ๋ฃจํด์ ๋ฆฌํดํ๊ฒ ๋ง๋ค์ด์ ธ ์๋ค๋ฉด, ๊ฑฐ์ง ๋ณ๋ ์ค๋ ๋ ์ฐ๊ฒ ์ง. ์ฝ๋ฃจํด์ด๋ async์ ์ฐ๋ ์ด์ ์์ฒด๊ฐ ๋ฉ์ธ์ค๋ ๋ ๋ธ๋ฝํน์ ํผํ๋ ค๊ณ ์ฐ๋๊ฑด๋ฐ..
์ฐฉ๊ฐ ๋ธ๋ญํนํจ์๊ฐ ์๋๋ผ ๋๋ธ๋ญํน ํจ์์ด๊ธดํ๋ฐ, (๋น์ฐํ ๋๋ธ๋ญํน์ด๋๊น yield๊ฐ ๊ฐ๋ฅํ๊ณ ). ๋ด๋ถ์ ์ผ๋ก ์ฐ๋ ๋๋ฅผ ๋ง๋ค๋์ง ์๋ง๋ค๋์ง ๊ทธ๊ฑด ๊ตฌํ์ ์ธ ์ ์ฅ์ด๊ณ , ๋๋ธ๋ญํนํจ์๋ผ์ yield ํ ์ ์๋๊ฑฐ. ์ฆ ๋ด๋ถ์ ์ผ๋ก ์ฐ๋ ๋๋ฅผ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์ค์ง๊ฐ ์๋๋๊ฒ ์๋๋ผ๋ ๋ง.
๋น๋๊ธฐํจ์๋ผ๊ณ ๋ฌด์กฐ๊ฑด ๋ณ๋์ ์ฐ๋ ๋๋ก ๋๋๊ฒ ์๋.
๋น๋๊ธฐ ์์ผํจ์๋ค, IOCP ๋ฑ์ ๋ชจ๋ ๋น๋๊ธฐ๋ก ๋๊ณ yield ํ ์ ์๋๋ฐ ์ฐ๋ ๋ ํ์ธํด๋ณด์ . ์ฐ๋ ๋ ์์ฑ์๋จ.
ใ ใ ๋น์ฐํ ๋ชจ๋ ์ฝ๋ฃจํด์ด ๋ณ๋์ค๋ ๋์์ ๋์ํ๋ค๋ ๋ง์ด ์๋์ง. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ๋งํ๊ฑด Get์ด์๋๋ผ SendWebRequest();์์ ๋ฆฌํดํ๋ ์ฝ๋ฃจํด์ ๋งํ๊ฑฐ๊ณ . ๋ด ์ค๋ช ์ด ์ด์ํ๋ค๋ฉด ใ ใ
์ ์ด๋ ต๋ค.. ๋น๋๊ธฐ, ๋ฉํฐ์ค๋ ๋, ์ฝ๋ฃจํด... ๋ด๊ฐ ์ ์ดํด๋ฅผ ๋ชปํ๋๊ฑด๊ฐ.. ์ ๋ํฐ ๋ฌธ์ ์ฝ์ด๋ด๋ ์ ํํ ๋์๋ฐฉ์์ ์ฐพ์ ์ ์์ด.. ๊ทธ๋ฅ ์ํ์ฝ๋๋ง ์๊ณ
๊ทธ๋ฆฌ๊ณ IOCP๊ฐ์ ๊ฒฝ์ฐ๋ ์ด๋ฏธ ๋ณ๋ ThreadPool์ ๊ฐ์ง๊ณ ์์ผ๋๊น ์ฝํด๋ ๋ณ๋์ค๋ ๋ ์์ฑ์ด ์๋๊ฒ ๋น์ฐํ๊ฑฐ ์๋? ๋ด๊ฐ ์๊ธฐ๋ก๋ ๋น๋๊ธฐ operationํ๋ค๊ณ ์ปจํ ์คํธ๋น ์ค๋ ๋ ๋ง๋ค์ด๋๋ ๋ฌธ์ ๋ฅผ IOCP๊ฐ ํด๊ฒฐํ๊ธฐ์ํด์ ThreadPool๊ฐ๋ ์ผ๋ก ๋์๊ฐ๊ณ ์๋๊ฑธ๋ก ์๋๋ฐ. ๋ญ ์๋๋ฉด ๋ง๊ณ
IOCP ์ฐ๋ ๋ ํ์ ์ปค๋ ์ฐ๋ ๋๋ฅผ ๋งํจ. ์์ฉ๋จ์ ์ฐ๋ ๋๊ฐ ์๋.
์ ์ด์ ํต์ ๋ฐ์ดํฐ๋ฅผ ์์ฉ๋จ์ฐ๋ ๋์์ ์ฒ๋ฆฌํ ์๊ฐ ์์.
๊ถ๊ธํ๋ฉด IOCP ์์ฑํ ๋ ์ฐ๋ ๋ ๊ฐฏ์ ์ค์ ํ ์ ์๋๋ฐ 20๊ฐ๋ก ์ค์ ํ๊ณ ์ฐ๋ ๋ ๊ฐฏ์ ํ์ธํด๋ณด์ .
์ฐฉ๊ฐ ๋ ธ. ์ ์ด๋ถํฐ ๋ด๊ฐ ๋ณ๋์ค๋ ๋์์ ์ฒ๋ฆฌํ๋ค๊ณ ํ์ง, ์์ฐํ๋ค๊ณ ๋งํ์ ์์
๊ทธ๋๊น ๋ณ๋์ ์ฐ๋ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ค์ง๊ฐ ์๋๋๊ฒ ์๋๊ณ . ์ค์ ๋ก ๋ณ๋์ ์ฐ๋ ๋์์ ๋์ง๋ ์๊ณ .
๋น๋๊ธฐ ํ๊ณ ๋ฉํฐ์ฐ๋ ๋ํ๊ณ ๊ฐ์๋ง์ด ์๋
๋ด๊ฐ ๊ตณ์ด IOCP ์ปค๋ ์ฐ๋ ๋๋ฅผ ์ธ๊ธํ ์ด์ ๋ ํต์ ๋ชจ๋์ด ์ปค๋์ฐ๋ ๋๋ฅผ ์์ฑํจ์ผ๋ก๋ด๋ถ์ ์ผ๋ก๋ ๋ฉํฐ ์ฐ๋ ๋์ด๋ค ๋ผ๊ณ ํ๋๋ง์ด ํ๋ ธ๋ค๋๊ฑธ ๋งํ๊ฑฐ์. ๊ทธ๋ ๊ฒ ๋ฐ์ง๋ฉด ํ์ผ์ ์ฐ๋์ผ. ํ๋ฉด์ ์ ํ๋ ์ฐ๋ ์ผ ๋ชจ๋ ๋ด๋ถ์ ์ผ๋ก ๋ฉํฐ์ฐ๋ ๋์. ์ฑ๊ธ์ฐ๋ ๋๋ผ๋ ๊ฐ๋ ์์ฒด๊ฐ ์์.
๋ด๊ฐ ์์์ ํ ๋ง์ ์ ์ฝ์ด๋ด. ์ฝ๋ฃจํด์ด ๋ฌด์กฐ๊ฑด ๋ณ๋์ค๋ ๋์์ ๋๋ค๊ณ ํ์ ๋ ์๊ณ IOCP๋ ์ ๋ํฐ SendRequest๋ด๋ถ์์ ๋ณ๋ ์ค๋ ๋๋ฅผ ์์ฑํ๊ฑด ์ค๋ ๋ํ์ ์ฌ์ฉํ๊ฑด ์์ฉ์ค๋ ๋๋ ์ปค๋์ฐ๋ ๋๋ ์๊ด์์. ๊ทธ๋ฆฌ๊ณ ๋น๋๊ธฐ๋ ๋ฉํฐ์ค๋ ๋๊ฐ ๊ฐ์๊ฑฐ๋ผ๊ณ ๋งํ์ ๋ ์๊ณ ... ๋ค ๋ง์ด ๋ง๊ฒ ์ง๋ง, ์๊พธ ๋ด๋ง์ ๋๋ฌด ํ๋ํด์ํ๊ฑฐ๊ฐ๋ค.
"๋ฉ์ธ์ค๋ ๋๊ฐ ๋ฉ์ถ์ง ์์.๋ณ๋์ค๋ ๋์์ ๋์๊ฐ๋๊ฑฐ์." => "์ฝ๋ฃจํด์ ๋ฉ์ธ ์ฐ๋ ๋๋ฅผ ๋ฉ์ถ๊ฒ ํ์ง ์์. ๋น๋๊ธฐํจ์๋ค์ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ค์ ๊ฑฐ๊ธฐ๋ถํฐ ์คํ๋ ์ ์๋ ํ๊ฒฝ์ ๋ง๋ค์ด์ฃผ๊ธฐ ๋๋ฌธ"
์ ์ด์ ์ฐ๋ ๋๋ผ๋ ๋ง์ ์ธ๊ธํ๊ฒ ๋ถํฐ ๋ณธ์ธ๋ ์ ๋ชจ๋ฅด๊ณ ๋๊ธ ๋จ๊ฑฐ๊ณ . ์ง๊ธ๋ ๋ณธ์ธ์ ์ค๋ ฅ์ ์๋๋ฐ ๋จ์ง ์คํดํ๊ธฐ ์ฝ๊ฒ ๋๊ธ์ ์ด๊ฒ์ฒ๋ผ ํฌ์ฅํ๋ ค๊ณ ๋ ธ๋ ฅ์ค์ธ๊ฑฐ๊ณ .
๋๋ค ํ๋๋ง ์ดํด ์๋๋๋ฐ ์ด๋ค๊ฑฐ ๋ถํฐ ๋ด์ผํจ.. ๊ทธ๋ฅ c++ ์ค๋ ๋๋ง ๋ช๋ฒ ๋๋ ค๋ดค์ง ์ดํด๋ชปํ๊ฒ ๋ค...
"UnityWebRequest.Get์์์ ๋ณ๋ ์ค๋ ๋๋ก ๋์ํ๊ณ ์ฝ๋ฃจํด์ ๋ฆฌํดํจ. ๊ทธ๋์ yield return์์ ๊ฑธ๋ ค๋, ๋ฉ์ธ์ค๋ ๋๊ฐ ๋ฉ์ถ์ง ์์" => ์ด๊ฒ ๋ณ๋์ค๋ ๋๋ฅผ ์์ฑํ๋ค๋ ๋ง๋ก ์ฌํ ์ฐฉ๊ฐํ๊ณ ๋ฐ์ํด๋๊ณ ๋. ์ฒ๋ฆฌํ๋ค๊ณ ํ์ง ใ ใ ์ค๋ฐํ์ง์ข๋ง๋ผ
์๋ค ๋ค ์๋ฅด๊ณ ๋ฉ์ธ์ค๋ ๋๊ฐ ๋ฉ์ถ์ง ์์๋ง ๋ฐ์ทํด์ ํ๋ํด์ํ๊ณ ์๋ ธ ใ ใ
๊ทธ๋ฅ ์๋ชป ์๊ณ ์์์. ์ด๋ฌ๋ฉด ๋ ๊ฑธ ๋ญ๊ฐ ๊ทธ๋ฆฌ ๊ตฌ์ฐจํ์ง.
"๋ฉ์ธ์ค๋ ๋๊ฐ ๋ฉ์ถ์ง ์์.๋ณ๋์ค๋ ๋์์ ๋์๊ฐ๋๊ฑฐ์." ์ ๋ฐ ์ข.
๋ด๊ฐ ํ์ ๋์๋ ๋ง์ ๊ฐ์ง๊ณ ์๋์ฒํ๋ค ๋์ ํ์ ๋๊ณ ๋ ๋ญ. ๋ด๊ฐ ๋น๋๊ธฐ๋ ๋ฉํฐ์ค๋ ๋๊ฐ ๊ฐ๋ค๊ณ ์ธ์ ๋งํ๋ ใ ใ ใ
"๋ฉ์ธ์ค๋ ๋๊ฐ ๋ฉ์ถ์ง ์์.๋ณ๋์ค๋ ๋์์ ๋์๊ฐ๋๊ฑฐ์." (X) "๋ฉ์ธ์ฐ๋ ๋๊ฐ ๋ฉ์ถ์ง ์์. ์ฝ๋ฃจํด์ด ํ๋์ผ์ด ์ฑ๊ธ์ฐ๋ ๋์์ ๋น๋๊ธฐํจ์๊ฐ ์๋ฃ๊ฐ ๋๋ฉด ๊ฑฐ๊ธฐ๋ก jump ํ๊ฒ ํด์ฃผ๊ธฐ ๋๋ฌธ" (O)
"UnityWebRequest.Get์์์ ๋ณ๋ ์ค๋ ๋๋ก ๋์ํ๊ณ ์ฝ๋ฃจํด์ ๋ฆฌํดํจ. ๊ทธ๋์ yield return์์ ๊ฑธ๋ ค๋, ๋ฉ์ธ์ค๋ ๋๊ฐ ๋ฉ์ถ์ง ์์. ๋ณ๋์ค๋ ๋์์ ๋์๊ฐ๋๊ฑฐ์." ์๋ค ๋ค ์๋ฅด๊ณ ๋ฉ์ธ์ค๋ ๋๋ถํฐ ๋ณ๋์ค๋ ๋๋ง ๊ฐ์ง๊ณ ํด์ํ์ง๋ง๊ณ ๋ณ๋์ค๋ ๋ ์์ ์ ํ๋ ์ฃผ์ฒด๋ UnityWebRequest์. ์ ์๊พธ ํ์๋ฆฌ๋ฅผ ์ง๊ป์ด๋๋ฐ ใ ใ ใ
์ฌ๊ธฐ์ ์ ์ ์น๋ฆฌํ๋๊ฒ ๊ทธ๋ฆฌ ์ค์ํ๊ฐ? ๋๊ฐ ์ด๊ฒผ๋ค. ๋ ์ ๋ง ๋๋จํ ์ค๋ ฅ์์ผ. ๊ณ ์์์์ ๊น๋ถ์ด์ ใ ใ .
์ค๋ ฅ์ ๋๊ฐ ๋๋ณด๋ค ๋ ์ข์๊ฑฐ๊ฐ์๋ฐ, ์ ๋ฐ ๊ธ์ ๋ค ์ฝ๊ณ ์๊ธฐํ๋๊ฐ. ๋จ์ด ํ์ง๋ ์์ ์๊ธธ ๋ง๋ค์ด๋ด์ง ๋ง์. ์ค๋ ฅ์ด์ผ ๊ณต๋ถํ๋ฉด ๋์ง๋ง, ์ธ์ฑ์ ๊ณ ์น๊ธฐ ํ๋ค๊ฑฐ๋
๊ทธ๋ ๊ธ์ ์ฝ์ด๋ณด๋ ์ธ์ฑ๋ ๋๊ฐ ํจ์ฌ ์ข๋ค. ์ธ์ฑ์ผ๋ก ํ์๋๋งํ๋ค. ํ๋ฅญํด.
๋๊ธ๋ณด๋๊น ๋ ์ธ์ฑ๋ํ๋ฅญํ๊ณ ์ค๋ ฅ๋ ์ข๋ค ๋ด ๋๊ธ๋ณด๋๊น ์ธ์ฑ๋ ๋ถ์กฑํ๊ณ ์ค๋ ฅ๋ ๊ฝ์ด๊ณ . YOU WIN!
๊ทธ๋ฆฌ๊ณ ๋๋ธ ๋๊ฐ "์ฐฉ๊ฐ" ์ด๋ผ๊ณ ์๊ธฐํ๋๊ฒ ์ฌ์ค ์ฌ๊ธฐ์๋ถํฐ ์ธ์ฑ ๋ณด์ด๊ธด ํ๋๋ฐ, ๋ด๊ฐ "์ค๋ช ์ด ์ด์ํ๋ค๋ฉด ใ ใ "์ด๋ผ๊ณ ์ ์๊ฒ ์๊ธฐํ๋๋ฐ๋, ๋ญ์ ์์ด ๋ฐ์ผ์ ๊ฑด์ง ๋ช๋ง๋ ํ๋ํด์ํ๊ณ ๋๋ฆฌ๋ฅผ ์น์๋๋ง... ์์์ผ๋ฉด ๋ด์ ๊ทธ๋ฌ์ง๋ง์. ๋น๊ผฌ์ง ๋ง๊ณ
์ฝ๋ฃจํด ๋ฉ์ธ์ฐ๋ ๋์์ ์คํ๋๋ค๋๋ฐ์...?
์ฝ๋ฃจํด์ ๋น์ฐํ ๋ฉ์ธ์ค๋ ๋์. UnityWebRequest.Send()๋ UnityWebRequestAsyncOperation๋ฅผ ๋ฆฌํดํ๋๋ฐ, ์ฌ๊ธฐ์์์ ์น ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ค๋ ์ผ์ ๋ณ๋์ค๋ ๋๊ฐ ํ๋๊ฑฐ๊ณ , UnityWebRequestAsyncOperation๋ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋๊น์ง ํด๋ง์ผ๋ก ๊ธฐ๋ค๋ฆด ๋ฟ์. ๊ธฐ๋ค๋ฆฌ๋ ์ผ๋ง ์ฝ๋ฃจํด์ด ๋ฉ์ธ์ค๋ ๋์์ ํ๋๊ฑฐ์ง, ์ค์ ์ฒ๋ฆฌ๋ ๋ณ๋์ค๋ ๋์์ ํ๊ณ ์๋๊ฑฐ
์ฑ๊ธ์ค๋ ๋๋๊น ์ฝ๋ฃจํด์๋๋ฉด ๋ฉ์ถ์์
๊ทธ๋์ ๋ฉํฐ์ค๋ ๋ ๋๋ ค์ผํ๋๊ฑฐ์๋?
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๊ฐ๊ฐ์ ์์ ์ ์ฝ๋ฃจํด ํ์?์ผ๋ก ์ชผ๊ฐ๋๊ฑฐ ์๋๊ฐ์??
async์ ๋ํด ๊ณต๋ถํด๋ณด๋ฉด ์ข์๊ฑฐ๊ฐ๋ค ๊ฒ์ด์ผ
์ค๋ฆฌ์ง๋ C#์์ await Task.delay ๊ฐ์ ํจ์๋ ์ง์ ๋ ์๊ฐ๋งํผ ๋๊ธฐํ๋ค๊ฐ ์ฝ๋๋ฅผ ๋ฑ๋๋ฐ ์ด ์ด์ ๋ ํธ์ถํ๋ ์์ ์์ ํด๋น ์ฐ๋ ๋์ธ๋ฐ await Task.Delay ๋ง๋๋ ์๊ฐ ์๋ ์ฝ๋๋ ๋ค๋ฅธ ์ฐ๋ ๋์์ ์คํ๋์ ๋ค์ ์๋ ์๋ ์ฐ๋ ๋๋ก ์ ํํ๋๊ฑฐ์ ใ ใ
์ง์ง ์ฌ๋งํ ๊ธ ๋ค๋ดค์. ์ฝ๋ฉ๋ ํด๋ณด๊ณ ๊ทผ๋ฐ ์ ๋ํฐ์์ ๋ญ๊ฐ ์ดํด๊ฐ ์๋จ...
๋๋ ๊ทธ๋