[๊ณ ์ฑ๋ฅ] 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..