async2 Asyncio - ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ์ฃผ์ ๊ฐ๋ ํ์ด์ฌ์ asyncio ๋ชจ๋์ ๋น๋๊ธฐ I/O, ์ด๋ฒคํธ ๋ฃจํ, coroutines ๋ฐ ํ์คํฌ(task) ๊ด๋ฆฌ ๋ฑ์ ํตํด ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. asyncio๋ฅผ ์ฌ์ฉํ๋ฉด ๋คํธ์ํฌ ๋ฐ ์น ์์ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ I/O ๋ฑ์ ์์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.์ด๋ฒคํธ ๋ฃจํ (Event Loop):์ด๋ฒคํธ ๋ฃจํ๋ ์ฝ๋ฃจํด๊ณผ ์ฝ๋ฐฑ์ ๊ด๋ฆฌํ๊ณ , I/O ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์ญํ ์ ํฉ๋๋ค.asyncio.run() ํจ์๋ฅผ ํตํด ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์์ํ ์ ์์ต๋๋ค.์ฝ๋ฃจํด (Coroutine):async def๋ก ์ ์๋ ํจ์์ ๋๋ค.await ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ฝ๋ฃจํด์ด๋ ๋น๋๊ธฐ ์์ ์ ๊ธฐ๋ค๋ฆฝ๋๋ค.ํ์คํฌ (Task):์ฝ๋ฃจํด์ ์ด๋ฒคํธ ๋ฃจํ์์ ์คํํ ์ ์๋ ๋จ์๋ก ๋ณํํฉ๋๋ค... 2024. 6. 23. std::thread์ std::async โ ์ค๋ ๋ ๊ธฐ๋ฐ ์ ๊ทผ vs ๊ณผ์ ๊ธฐ๋ฐ ์ ๊ทผ work๋ผ๋ ํจ์๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง ์ ๋๋ค. ํ๋๋ std::thread ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๊ทธ ๊ฐ์ฒด์์ work๋ฅผ ์คํํ๋ ๊ฒ์ด๊ณ , ์ด๋ ์ค๋ ๋ ๊ธฐ๋ฐ(thread-based) ํ๋ก๊ทธ๋๋ฐ์ ํด๋นํฉ๋๋ค. ๋ ํ๋๋ work๋ฅผ std::async์ ๋๊ฒจ์ฃผ๋ ๊ฒ์ด๊ณ ์ด๋ ๊ณผ์ ๊ธฐ๋ฐ(task-based) ํ๋ก๊ทธ๋๋ฐ์ ํด๋นํฉ๋๋ค. int work(); std::thread t(work); auto f = std::async(work); ์ ์ฝ๋๋ฅผ ์ง๊ด์ ์ผ๋ก ๋ณด์์ ๋, async๋ฅผ ์ฐ๋ฉด work์ ๋ฐํ ๊ฐ์ ์ป์ ์ ์๋ค๋ ๊ฒ์ด ๋ณด์ ๋๋ค.(std::get์ ํตํด ์ป์ ์ ์์ต๋๋ค)(thread๋ ํจ์์ ๋ฐํ ๊ฐ์ ์ป์ ์ ์์ต๋๋ค.) ์ด๊ฒ ๋ฟ๋ง ์๋๋ผ .. 2023. 1. 14. ์ด์ 1 ๋ค์