Closed dianestar closed 2 years ago
Mutex๋ Locking ๋งค์ปค๋์ฆ์ผ๋ก ์์์ ๊ฐ์๊ฐ ํ๋์ผ ๋ ์ ์ฉํ๋ ํ๋ก์ธ์ค ๋๊ธฐํ ๊ฐ์ฒด์ด๋ค. ์ค์ง ํ๋์ ์ฐ๋ ๋๋ง์ด ๋์ผํ ์์ ์ Mutex๋ฅผ ์ป์ด ์๊ณ๊ตฌ์ญ์ ๋ค์ด์ค๊ณ ๋๊ฐ ๋ ์์์ ํด์ ํ ์ ์๋ค. Semaphores๋ ๊ณต์ ์์์ด ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ฉฐ block/wakeup ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ฉ๋ ๊ฐ์ฒด์ด๋ค.
์์ ๋งํ ๊ฒ์ฒ๋ผ ์ธ๋งํฌ์ด๋ ๋ฎคํ ์ค์ ๋ค๋ฅด๊ฒ ๊ณต์ ์์์ด ์ฌ๋ฌ๊ฐ์ผ ๋ ์ฌ์ฉ๋๋ฉฐ ์์์ ํด์ ํ๋ ๋์๋ ์์์ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๋ ์ ์๋ค.
๋ฎคํ ์ค์ ์ธ๋งํฌ์ด๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ๋๊ธฐํ ๊ธฐ๋ฒ์ด๋ผ๋ ์ ์์ ๋์ผํ์ง๋ง ๋ฎคํ ์ค๋ ์ค์ง 1๊ฐ์ ํ๋ก์ธ์ค ๋๋ ์ฐ๋ ๋๋ง์ด ์ ๊ทผํ ์ ์๊ณ , ์ธ๋งํฌ์ด๋ ์ธ๋งํฌ์ด์ ๋ณ์๋งํผ์ ํ๋ก์ธ์ค ํน์ ์ฐ๋ ๋๊ฐ ์ ๊ทผํ ์ ์๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋ํ ์ธ๋งํฌ์ด๋ ํ์ฌ ์ํ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ธ๋งํฌ์ด๋ฅผ ํด์ ํ๊ณ ์ ๊ธ ์ ์์ง๋ง ๋ฎคํ ์ค๋ ๋ฝ์ ํ๋ํ ํ๋ก์ธ์ค๋ง์ด ๊ทธ ๋ฝ์ ํด์ ํ ์ ์์ต๋๋ค.
Mutex๋ ์ฃผ๋ก Binary Semaphore๋ฅผ ์ผ์ปซ๋๋ฐ, ์ด๋ ์์์ ๊ฐ์๊ฐ ํ๋ ๋ฟ์ด๋ผ ์ค์ง ํ ๊ฐ์ ํ๋ก์ธ์ค๋ง์ด ๊ณต์ ์์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๋ฐ๋ฉด, Counting Semaphore๋ ์์์ ๊ฐ์๊ฐ ์ฌ๋ฌ ๊ฐ๋ก ์ง์ ๋ ๋ณ์ ๊ฐ ๋งํผ์ ๋ค์์ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค๋ ํน์ง์ด ์์ต๋๋ค. ๋ํ, Mutex๋ lock์ ์ค์ ํ ์ค๋ ๋ ๋๋ ํ๋ก์ธ์ค ๋ณธ์ธ๋ง์ด lock์ ํด์ ํ ์ ์๋ ๋ฐ๋ฉด, Semaphore๋ ์ปค๋ ๋จ์์์ ๋ฆฌ์์ค ๋ณ์๊ฐ ๊ด๋ฆฌ๋๋ฏ๋ก lock์ ์ค์ ํ ํด๋น ํ๋ก์ธ์ค๊ฐ ์ด์ธ์ ์ 3์์ธ ํ๋ก์ธ์ค๋ lock์ ํด์ ํ ์ ์๋ค๋ ์ฐจ์ด์ ์ ๊ฐ์ต๋๋ค.