C# ์ ๋๋ก ๋ฐฐ์ฐ๊ธฐ (๊ณ ๊ธ) Part.3,4,5 ์ค๋ ๋์ ํ์คํฌ
๋ณธ ๊ณผ์ ์ C# ๋ฉํฐ์ค๋ ๋์ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๊น์ด ์๊ฒ ๋ค๋ฃจ๋ ๊ณ ๊ธ ๊ณผ์ ์ผ๋ก, ์ค๋ฌด์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋์์ฑ ์ฒ๋ฆฌ ๊ธฐ๋ฒ์ ์ฒด๊ณ์ ์ผ๋ก ํ์ตํ ์ ์๋๋ก ๊ตฌ์ฑ๋์์ต๋๋ค. ๋จผ์ , ์ค๋ ๋์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๊ณ ์ค๋ ๋๋ฅผ ์์ฑยท๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค์ตํ๋ฉฐ, ๋ค์ํ ์ค๋ ๋ ๋ฉ์๋์ ThreadState ์ด๊ฑฐํ, Flags ์์ฑ ๋ฑ์ ํตํด ์ค๋ ๋์ ์ํ์ ๋์์ ์ธ๋ฐํ๊ฒ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ์ตํ๋๋ค. ์ด์ด์, **Interrupt()์ Abort()**์ ์ฐจ์ด์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค์ตํ๊ณ , **lock ํค์๋์ Monitor ํด๋์ค(Enter, Exit, Wait, Pulse)**๋ฅผ ํ์ฉํ์ฌ ์ค๋ ๋ ๊ฐ ๋๊ธฐํ๋ฅผ ์์ ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค. ๋ํ, ์ต์ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ์์ ์ธ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ๋ค๋ฃจ๋ฉฐ, Task ๋ฐ Task<TResult> ํด๋์ค, Parallel ํด๋์ค๋ฅผ ํ์ฉํ ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ ์ค์ตํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก async/await ํค์๋๋ฅผ ํตํด ๋๊ธฐ ์ฝ๋์ ๋น๋๊ธฐ ์ฝ๋์ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ , ๋ณด๋ค ํจ์จ์ ์ธ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ํ๋ก์ ํธ์ ์ ์ฉํ๋ ๊ฒฝํ์ ์์ ์ ์์ต๋๋ค. ์ด ๊ฐ์๋ฅผ ํตํด ํ์ต์๋ ๋ฉํฐ์ค๋ ๋์ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ํ์ฉํ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋ฅ๋ ฅ์ ๊ฐ์ถ๊ฒ ๋๋ฉฐ, ์ค๋ฌด์์์ ๋์์ฑ ๋ฌธ์ ํด๊ฒฐ๊ณผ ํจ์จ์ ์ธ ํ๋ก๊ทธ๋จ ๊ตฌํ์ ์์ ๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค.






