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

๊ณต์œ ์ž์›2

ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™” ๊ธฐ๋ฒ• ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์˜ ์ˆ˜ํ–‰ ์‹œ๊ธฐ๋ฅผ ๋งž์ถ”๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ ์ž…์žฅ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•˜๊ณ  ์ƒํ˜ธ ๋ฐฐ์ œ(๋™์‹œ์— ์ ‘๊ทผํ•ด์„œ๋Š” ์•ˆ๋˜๋Š” ์ž์›์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผ)์„ ์›ํ™œํžˆ ์ด๋ฃจ์–ด๋‚ด์•ผ ํ•˜์ฃ . ์ด์™€ ๊ด€๋ จํ•ด์„œ ๊ณต์œ  ์ž์›๊ณผ ์ž„๊ณ„ ์˜์—ญ, ์ƒ์‚ฐ์ž/์†Œ๋น„์ž ๋ฌธ์ œ, ๊ฒฝ์Ÿ ์ƒํƒœ, ์ž„๊ณ„ ์˜์—ญ ๋“ฑ์˜ ๊ฐœ๋…์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ๋…๋“ค์€ ์ด์ „์— ๋‹ค๋ค˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. [C++] 21. ์Šค๋ ˆ๋“œ ๊ฒฝ์Ÿ ์ƒํƒœ(Race condition), ๋ฎคํ…์Šค(mutex), ๋ฐ๋“œ๋ฝ, std::conditional_variable, std::async ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค, std::thread์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. [C++] 20. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ.. 2023. 11. 6.
[C++] 21. ์Šค๋ ˆ๋“œ ๊ฒฝ์Ÿ ์ƒํƒœ(Race condition), ๋ฎคํ…์Šค(mutex), ๋ฐ๋“œ๋ฝ, std::conditional_variable, std::async ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค, std::thread์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. [C++] 20. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Multi-Threads) ์˜ค๋Š˜์€ ์ด์–ด์„œ ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ์˜ ์ถฉ๋Œ ๋ฌธ์ œ์™€ lock ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ณ , ์Šค๋ ˆ๋“œ๋“ค(workers)์ด wait์ƒํƒœ์—์„œ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ ์ž‘์—…์ด ์žˆ์„ ๋•Œ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์Šค๋งˆํŠธํ•œ ์šด์˜๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ ์ž์›(Shared Resources)๊ณผ ์ž„๊ณ„์˜์—ญ(Critical Section) ์Šค๋ ˆ๋“œ(Thread)๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์€ ์‹คํ–‰ ๋‹จ์œ„๋กœ, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์Šค๋ ˆ๋“œ ๊ฐ„์—๋Š” ๊ณต์œ ์ž์›(Shared Resource)๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณต์œ ์ž์›์„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ž„๊ณ„์˜.. 2023. 8. 22.