์ผ์ชฝ์ -1์ด ๋ค์ด์๋ ๊ณต๊ฐ(Node, ์ฐ์ธก ํด๋์ค) 5๊ฐ๋ฅผ ๋ง๋ ํ ๋ ๊ฐ์ Task๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ์ 1 ํน์ 2๋ก ์ฑ์ฐ๋ ํจ์์ผ.
์ฒซ๋ฒ์งธ Task๋ ๊ณต๊ฐ์ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก 1์ ์ฑ์๋๊ฐ๊ณ , ๋๋ฒ๋ Task๋ ๊ณต๊ฐ์ ์ค๋ฅธ์ชฝ๋ถํฐ ์ผ์ชฝ์ผ๋ก 2๋ฅผ ์ฑ์๋๊ฐ.
๋ Task๋ ๊ณต๊ฐ์ด -1์ด ์๋๋ฉด(1 ํน์ 2๊ฐ ์ฑ์์ ธ ์์ผ๋ฉด) ๋ฉ์ถฐ.
๊ณต๊ฐ์ 5๊ฐ ์ค์ ํด๋๋ฉด ๋๋ค์ผ๋ก [1][1][1][2][2] ํน์ [1][1][2][2][2]๋ก ์ฑ์์ ธ.
์ด๋ ์ง๋ฌธ
1. ์ผ์ชฝ ๋นจ๊ฐ ์์ ์์ lock๋ ๊ผญ ํ์ํด? ๋ Task๊ฐ ๋์์ 3๋ฒ์งธ(์ค๊ฐ) ๋ ธ๋์ ์ ๊ทผํ์ง ๋ง๋ผ๊ณ ํด๋ ๊ฑด๋ฐ, ์์ด๋ ์ ์์๋์ ํ๋๋ผ๊ณ .
2. Task.Delay๋ ๊ทธ๋ฅ Task๋ฅผ ๋ธ๋ก ์ํ๋ก ๋ง๋ค๊ณ ์ถ์ด์ ๋ ๊ฑด๋ฐ, 1๋ฐ๋ฆฌ์ด ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ด๋ฐ ๊ฑฐ ์์ด ๋ฐ๋ก ๋ธ๋ก์ํ๋ก ๋ง๋ค ์๋ ์๋?
3. ์ผ์ชฝ ์ด๋ก ์์์ Sleep์ ๋น๋๊ธฐ Task๊ฐ ๋๋ ํ Node๋ค์ ๊ฐ์ ์ฝ์ด์ค๊ธฐ ์ํด ๋๊ฑด๋ฐ, ๋น๋๊ธฐ Task์ ์๋ฃ๋ ๋ณ์ ์ฐธ์กฐ๊ฐ์ ์ธ๋ถ์ ์ธ ๋ฐฉ๋ฒ ๋ง๊ณ ๋ ์๋ฆผ์ ๋ฐ์ ์ ์๋?
์์ง ๊ด๋ จ ๊ฐ๋ ์ด ๋ถ์กฑํด์ ์ง๋ฌธ๋ ๋ง๊ฒ ํ๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๋ค... ์ง๋ฌธ์ด ์ข ์ด์ํ๋๋ผ๋ ์ดํดํด์ค.
์ด ๋๊ธ์ ๊ฒ์๋ฌผ ์์ฑ์๊ฐ ์ญ์ ํ์์ต๋๋ค.
lock์ ์๋ง ์๊ฑธ๋ฉด ์ค๋ ๋1์์ ๊ฐ์ ํ์ธํ๊ณ if๋ฌธ ์์ชฝ์ผ๋ก ๋์ด์๋๋ฐ ๊ทธ ์๊ฐ์ ์ค๋ ๋2์ ์ํด ๊ฐ์ด ๋ฐ๋๊ฑฐ๋ ํด์ ์๋ชป ์๋ํ๋ ๊ฒฝ์ฐ ๋ง๊ธฐ ์ํจ์ผ๊ป
์ ์ฝ๋์ฒ๋ผ ๋จ์ํ ์์ ๋ฌด์จ ๊ฐ์ด ๋ค์ด์๋ ์๊ด์์ด ์ ๋ ฅ๋ง ํ ๊บผ๋ผ๋ฉด lock๊ฑธ ํ์ ์๋๊ฑธ๋ก ์
ใ ใ ๋กํ. ์ฝ๋๋ ๋ฐฐ์ด๊ฑฐ ํ ๋๋ก ๋ด๊ฐ ์๋ก ์ง ๊ฑด๋ฐ ์ ๋๋ก ์ด๊ฒ ๋ง๋์ง ๊ถ๊ธํ์.
3์ continuewith ์ฐ๋ฉด ๋์ง์๋๊น์ ํ๋
์คํธ ์ด๋ฐ๊ฒ ์๊ตฌ๋ ใฑใ ใฑใ