์์ฐ์ ์๋น์ ๋๊ธฐ ๊ณต๊ฐ ๋ถ๋ฆฌ ์์ 5 ๋ถ์ ์ง๋ฌธ
์ง๋ฌธํ์ ๋๊ธฐ์ํ์ ์๋ ์๋น์1์ด ๊นจ์ด๋์ ์๋น๋ฅผ ํ๊ณ producerCond์ signal์ ์ค๋ producerCond์ ๋๊ธฐ์ค์ธ ์์ฐ์๊ฐ ํ๋๋ ์์ง ์์ต๋๊น? ๊ทธ๋ผ ์ด๋ ์์ฐ์๊ฐ ๋ฝ์ ๋ฐ๋๋ค๋ 100%์ ๋ณด์ฅ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ๊ถ๊ธํ์๋ค๋ ๊ฑฐ์ ๋ต๋ณ๋๋ ค๋ณด๊ฒ ์ต๋๋ค.๋จผ์ ์๋น์ ์ค๋ ๋ 3๊ฐ๊ฐ ์คํ๋์ด ๋๊ธฐ ์งํฉ์ ๋ค์ด๊ฐ ๋ค, ์์ฐ์ ์ค๋ ๋ 3๊ฐ๋ 0.1์ด ๋ง๋ค ์คํํ๊ฒ ๋ฉ๋๋ค.๊ทธ๋ฌ๋ฏ๋ก ์์ฐ์ 1์ด put์ ์งํํ๋ ๋์ ์์ฐ์ ์ค๋ ๋ 2,3์ ์์ฐ์ 1์ lock ์ด ํด์ ๋ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ์ฃ .( V2 ์์ ์์ฐ์ ๋จผ์ ์คํํด๋ณด์๋ฉด ์์ฐ์ ์ค๋ ๋ 3์ด ๋ชจ๋ํฐ ๋ฝ์ ๊ฐ์ง ์ํ์์ while๋ฌธ์ ๋ฌดํ ๋ฐ๋ณตํ๊ณ ์๊ณ , ์๋น์ ์ค๋ ๋ 3๊ฐ ๋ชจ๋ ์คํ๋์์ง๋ง ์ด๋ฏธ ์์ฐ์ ์ค๋ ๋ 3์์ ๋ฝ์ ํ๋ํ๊ธฐ ๋๋ฌธ์ ๋ฝ์ด ํด์ ๋๊ธฐ ๊น์ง BLOCKED ์ํ๋ก ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณด์๋ฉด ๋ฉ๋๋ค. ) ์ฆ, ์์ฐ์ 1์ lock์ด ํด์ ๋๋ ์๊ฐ ๋ค๋ฅธ ์์ฐ์ ์ค๋ ๋๋ค์ด lock์ ์ป์ ์ ์๊ฒ ๋๋๊ฑฐ์ฃ . ๋จผ์ ์ดํดํ์
์ผ ๋ ๋ถ๋ถ์ด ์์ฐ์ ์ค๋ ๋๋ค์ ๋๊ธฐ ์งํฉ๊ณผ ๊ด๊ณ์์ด lock์ด ํด์ ๋๋ฉด ๋ฐ๋ก ์คํ๋ ์ ์๋ ์ํ์ด๊ณ , ์๋น์ ์ค๋ ๋ 1,2,3์ ์์ฐ์ ์ค๋ ๋์ signal() ํธ์ถ์ ํตํด์๋ง ๋๊ธฐ ์งํฉ์์ ๋์ ์์
์ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ง๋ฌธ์๋์ด ๋ฌผ์ด๋ณด์ ์๋น์ 1์ด ๊นจ์ด๋์ ์๋น๋ฅผ ํ๊ณ producerCond์ ๋๊ธฐ์ค์ธ ์์ฐ์๊ฐ ํ๋๋ ์์ง๋ง ์์ฐ์๊ฐ ๋ฝ์ 100% ๋ฐ์ ์ ์๋ ์ด์ ๋ ์๋น์ 2์3์ ๋๊ธฐ ์งํฉ์์ ์์ฐ์ ์ค๋ ๋์ signal() ํธ์ถ์ ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ์ด๋ฉฐ, ๋ค๋ฅธ ์์ฐ์ ์ค๋ ๋๋ค์ ์๋น์1 ์ค๋ ๋์ unlock() ์ด ํธ์ถ๋์๋ง์ lock์ ํ๋ํ์ฌ ์์
์ ์ํํ๊ธฐ ๋๋ฌธ์
๋๋ค.