
์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ฆฌ์คํธ๋? ์ ์ ๋ฐฐ์ด๊ณผ์ ๋น๊ต ์ฐ์ฐ ์ฝ์ ์ญ์ ์ ๊ทผ ์ข ๋ฅ / ๊ตฌํ ๋ฆฌ์คํธ๋? ๋ฆฌ์คํธ๋ ์์๋ฅผ ๊ฐ์ง ํญ๋ชฉ๋ค์ ๋ชจ์์ด๋ค. ์ด๋ฅผ ๋ํ๋ด๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ 2๊ฐ์ง๊ฐ ์๋๋ฐ, ํ๋๋ ๋ฐฐ์ด์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๊ณ ๋๋จธ์ง ํ๋๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ฐฐ์ด์ ์ด์ฉํ ๋ฆฌ์คํธ๋ฅผ ์ ํ๋ฆฌ์คํธ๋ผ๊ณ ํ๋๋ฐ ๊ตฌํ ์์ฒด๋ ๊ฐ๋จํ๊ณ ์์์ ๊ทผ์ด ๊ฐ๋ฅํ์ง๋ง, ์ฝ์ / ์ญ์ ์ฐ์ฐ ์ ๋ค๋ฅธ ์์๋ค์ ์ด๋์ด ๋ถ๊ฐํผํ๋ฏ๋ก ์ค๋ฒํค๋๊ฐ ํฌ๋ค. ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๊ตฌํ์ด ๋ณต์กํ๊ณ ์์ฐจ์ ๊ทผ์ด ํ์ํ์ง๋ง ์ฝ์ , ์ญ์ ๊ฐ ํจ์จ์ ์ด๋ค. ์ ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ์ ๋งํฌ๋ก ์ด๋ฃจ์ด์ง ๋ ธ๋๋ก ๊ตฌ์ฑ๋์ด์๋ค. ๋งํฌ๋ ๋ค์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๋ค. ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ฒ์์๋ ํค๋ ํฌ์ธํฐ๊ฐ ํค๋ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ผ๋ฉฐ, ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ๋ ..

๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต ๋ฌธ์ ์ ์ ๋ฌธ์ Linked List ์๋ฃ๊ตฌ์กฐ์์ push()์ pop() ์ฐ์ฐ์ ๊ตฌํํ๋ค. Linked List๋ FreeList์ HeadList ๋๊ฐ์ง๊ฐ ์์ผ๋ฉฐ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋ ๊ฐ์ List๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉฐ push, pop ์ฐ์ฐ์ ์ํํ๋ค. ์ค๋ ๋๋ค์ด ๊ฐ๊ฐ ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํด์๋ List๋ค์ ๋ํ ์ํธ๋ฐฐ์ ๊ฐ ํ์ํ๋ค. ํด์ ์ํธ ๋ฐฐ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ง๋ง, ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋ ์ ์๋ค. lock ๋ณ์์ ์กฐ๊ฑด์ ์ฒดํฌํ๋ฉฐ ๋ฐ๋ณต๋ฌธ์ ๋๊ณ ์๋ spin lock๊ณผ, lock ๋ณ์ ์์ด ๊ณ์ ์๋ํ๋ฉด์ ์ ์ ํ ๋์ ๋์์ ์ํ..
Comment