๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Parallelism1

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.