[๊ณ ์„ฑ๋Šฅ] CAS(Compare and Swap)๊ณผ Lock-Free Queue
ยท
์ปดํ“จํ„ฐ ๊ตฌ์กฐ & ์šด์˜์ฒด์ œ
๋“ค์–ด๊ฐ€๋ฉฐ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”์ž…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ„ ๊ฒฝํ•ฉ(race-condition)์ด ๋ฒŒ์–ด์กŒ์„ ๋•Œ, ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ๋™๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€ํ‘œ์ ์œผ๋กœ Mutex Lock์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์„ฑ๋Šฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ Lock์€ ์ ˆ๋Œ€์•…์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”์— ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ์•„์ง ๋‚จ์•„์žˆ๊ธฐ ๋•Œ๋ฌธ์— Lock์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ Lock์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๋ฝํ”„๋ฆฌํ(Lock-Free Queue)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Producer and Consumer๋™์‹œ์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์ธ ์ƒ์‚ฐ์ž-์†Œ๋น„์ž ํŒจํ„ด(Producer Consumer Pattern)์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ/์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒ์‚ฐ์ž ์Šค๋ ˆ๋“œ์—์„œ Queue์— Job์„ Pu..