Programming (22) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [C# ํ๋ก๊ทธ๋๋ฐ] 4. ๋น๋๊ธฐ(2) ๊ฐ์ : [์ธํ๋ฐ] C#.NET 0.5๋ ์ฐจ~3๋ ์ฐจ(ํํธ1) ๋น๋๊ธฐ ์์ ์ด ๋๋๊ณ ํธ์ถํ ์ฝ๋ฐฑ ์ง์ ํด๋ณด๊ธฐ ๋น๋๊ธฐ ์คํ์ ๊ธฐ๋ค๋ ค๋ณด๊ธฐ MySetting์ Thread.Sleep์ 5์ด → 1์ด๋ก ๋ณ๊ฒฝ ์ [์ธ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์ 7 - ์ฐ์ฐ์ ์ฐ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฐ์ฐ์์ ๋๋ถ๋ถ์ ๋ค๋ฅธ ์ธ์ด์ ์ ์ฌํ๋ค. ๋ช ๊ฐ์ง ์ฃผ์ํด์ผ ํ ์ฐ์ฐ์๋ค์ ๋ํด์ ๊ฐ๋จํ ์์๋ณด์. 1. + ์ฐ์ฐ์ + ์ฐ์ฐ์๋ ๋ํ๊ธฐ ์ฐ์ฐ๊ณผ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์ ์ํํ๋ค. ๋ ์ฐ์ฐ์๊ฐ ๋ชจ๋ ์ซ์์ผ ๊ฒฝ์ฐ์๋ง ๋ํ๊ธฐ ์ฐ์ฐ์ด ์ํ๋๊ณ , ๋๋จธ์ง๋ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์ด ์ด๋ค์ง๋ค. 2. typeof ์ฐ์ฐ์ typeof ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์์ ํ์ ์ ๋ฌธ์์ด ํํ๋ก ๋ฆฌํดํ๋ค. ์ฌ๊ธฐ์ null๊ณผ ๋ฐฐ์ด์ด 'object'๋ผ๋ ์ , ํจ์๋ 'function'์ด๋ผ๋ ์ ์ ์ ์ํด์ผ ํ๋ค. 3. == (๋๋ฑ) ์ฐ์ฐ์์ === (์ผ์น) ์ฐ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ ๊ฐ์ด ๋์ผํ์ง๋ฅผ ํ์ธํ๋ ๋ฐ, ๋ ์ฐ์ฐ์๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค. == ์ฐ์ฐ์ : ๋น๊ตํ๋ ค๋ ํผ์ฐ์ฐ์์ ํ์ ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ์ ํ์ ๋ณํ์ ๊ฑฐ์น ๋ค์ ๋น๊ตํ๋ค. .. [์ธ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ฐ์ฐ์ 6 - ๊ธฐ๋ณธ ํ์ ๊ณผ ํ์ค ๋ฉ์๋ ๊ธฐ๋ณธ ํ์ ๊ณผ ํ์ค ๋ฉ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ซ์, ๋ฌธ์์ด, ๋ถ๋ฆฐ๊ฐ์ ๋ํด ๊ฐ ํ์ ๋ณ๋ก ํธ์ถ ๊ฐ๋ฅํ ํ์ค ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ ์๋ค. ํ์ง๋ง ๊ธฐ๋ณธ ํ์ ์ ๊ฒฝ์ฐ๋ ๊ฐ์ฒด๊ฐ ์๋๋ฐ ์ด๋ป๊ฒ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์๊น? ๊ธฐ๋ณธ ํ์ ์ ๊ฐ๋ค์ ๋ํด์ ๊ฐ์ฒด ํํ๋ก ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ, ์ด๋ค ๊ธฐ๋ณธ๊ฐ์ ๋ฉ์๋ ์ฒ๋ฆฌ ์๊ฐ์ ๊ฐ์ฒด๋ก ๋ณํ๋ ๋ค์ ๊ฐ ํ์ ๋ณ ํ์ค ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ์๋ ํธ์ถ์ด ๋๋๋ฉด ๋ค์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ณต๊ทํ๊ฒ ๋๋ค. toExponential() : ํ์ค ์ซ์ํ ๋ฉ์๋์ด๋ค. ์ซ์๋ฅผ ์ง์ ํํ์ ๋ฌธ์์ด๋ก ๋ณํํ๋ค. ์ธ์๋ก ๋ฐ๋ ๊ฐ์ ์์์ ์๋ ๋ช ๋ฒ์งธ ์๋ฆฌ๊น์ง ํ์ํ ๊ฒ์ธ์ง ์ง์ ํ๋ ๊ฒ์ด๋ค. charAt() : ํ์ค ๋ฌธ์์ด ๋ฉ์๋์ด๋ค. ๋ฌธ์์ด์์ ์ธ์๋ก ๋ฐ์ ์์น์ ์๋ ๋ฌธ์๋ฅผ ๋ฐํํ๋ค. ๋ฌธ์์ด ์ธ.. [C# ํ๋ก๊ทธ๋๋ฐ] 3. ๋น๋๊ธฐ, ๋๊ธฐ ๊ฐ์ : [์ธํ๋ฐ] C#.NET 0.5๋ ์ฐจ~3๋ ์ฐจ(ํํธ1) ์์ค์ฝ๋์ ํ๋ฆ ๋น๋๊ธฐ, ๋๊ธฐ ํจ์ ๋น๋๊ธฐ : BeginInvoke(), Async~()๋๊ธฐ : Invoke(), Sync~() โ ์์ 1 ๋น๋๊ธฐ ์คํ ์ด ์ค๋ฅ์ ๋ํด์๋ ์ถํ ๊ฐ์์์ ์ค๋ช ํ ๋ด์ฉ. ์ฌ๊ธฐ์๋ MySetting()์ ์ฝ๋๊ฐ ๋ค๋ฅธ ์ค๋ ๋์์ ์คํ๋๋ค๋ ๊ฒ๋ง ๊ธฐ์ตํ๊ธฐ. โ ์์ 2 ์ด ์ฝ๋๋ฅผ ๋๋ฒ๊น ๋ชจ๋๋ก ์คํ ํ 22๋ฒ์งธ ๋ผ์ธ์์์ label1.Text ๊ฐ ํ์ธํ๊ธฐ MySetting์ ์์ ์ด ์๋ฃ๋์ง ์์ label1.Text์ ๊ฐ์ด "label1"์ด๊ณ , myString ๊ฐ์ด "โณโณโณ"์ธ ๊ฒ ํ์ธ โ ์์ 3 ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ MySetting์ด ์๋ฃ๋ ํ Form1_Load์ label1.Text = myString; ๋ถ๋ถ์ด .. [C# ํ๋ก๊ทธ๋๋ฐ] 2. ์ค๋ ๋ ๋๊ธฐํ ๊ฐ์ : [์ธํ๋ฐ] C#.NET 0.5๋ ์ฐจ~3๋ ์ฐจ(ํํธ1) ์ค๋ ๋ ๋๊ธฐํ๋ ๋๊ธฐํ๋ ๋ ์ด์์ ์ค๋ ๋๊ฐ ์๋ก ์์ ์ ๋ฎ์ง ์๊ณ ๊ณต์ ๋ฆฌ์์ค(์์)์ ์์ ํ๊ฒ ์ก์ธ์คํ ์ ์๋ ๋ฐฉ๋ฒ ์๊ณ ์์ญ(critical section)์ด๋? ๋ฉํฐ ์ค๋ ๋์ ์ํด ๊ณต์ ์์์ด ์๋ก ์ฐธ์กฐ๋ ์ ์๋ ์ฝ๋์ ๋ฒ์ (์ค๋ ๋๊ฐ ์์ ํ๊ฒ ์ ๊ทผํ ์ ์๋ ์์ญ) โ ์์ 1 MessageBox์ 4๊ฐ ์๋ 3์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธ lock ํค์๋ ๋ณดํธ์ ์ผ๋ก ๋๊ธฐํ์ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ค. object lockObj = new object() lock(lockObj); โ ์ํธ ๋ฐฐ์ ์ ๊ธ์ ํ๋ โ ์์ 2 MessageBox์ 4๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ ํ์ธ lock ํค์๋ ์ฌ์ฉ ์ ์ฃผ์์ฌํญ lock(obj) { ... lock(obj).. [C# ํ๋ก๊ทธ๋๋ฐ] 1. ๋ฉํฐ์ค๋ ๋ ๊ฐ์ : [์ธํ๋ฐ] C#.NET 0.5๋ ์ฐจ~3๋ ์ฐจ(ํํธ1) 1. ๋ฉํฐ์ค๋ ๋ ์ฌ์ฉ ๋ชฉ์ - ๋ฉํฐ์ค๋ ๋ ๋ฏธ์ฌ์ฉ ์ ์์ฐจ์ ์คํ - ๋ฉํฐ์ค๋ ๋ ์ฌ์ฉ ์ ์์ ์ ๋ณ๋ ฌ๋ก ์คํ ๊ฐ๋ฅ โ ์์ 1 โ ์์ 2 โ ์์ 3 โ ์์ 4 โ ์์ 5 form2 ์ถ๊ฐ form2๋ ๊ฐ๋ณ ์ค๋ ๋๋ก ๋์ํ์ง ์๋ ๊ฒ ํ์ธ [ํ๋ก๊ทธ๋๋ฐ] ํ๋ก์ธ์ค์ ์ค๋ ๋ ํ๋ก์ธ์ค์ ์ค๋ ๋ ํ๋ก์ธ์ค(process)๋ ๊ฐ๋จํ ๋งํด์ '์คํ ์ค์ธ ํ๋ก๊ทธ๋จ'์ด๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด OS๋ก๋ถํฐ ์คํ์ ํ์ํ ์์(๋ฉ๋ชจ๋ฆฌ)๋ฅผ ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๊ฐ ๋๋ค. ํ๋ก์ธ์ค๋ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์์ ๊ทธ๋ฆฌ๊ณ ์ค๋ ๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ํ๋ก์ธ์ค์ ์์์ ์ด์ฉํด์ ์ค์ ๋ก ์์ ์ ์ํํ๋ ๊ฒ์ด ๋ฐ๋ก ์ค๋ ๋์ด๋ค. ๊ทธ๋์ ๋ชจ๋ ํ๋ก์ธ์ค์๋ ์ต์ํ ํ๋ ์ด์์ ์ค๋ ๋๊ฐ ์กด์ฌํ๋ฉฐ, ๋ ์ด์์ ์ค๋ ๋๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๋ฅผ '๋ฉํฐ์ค๋ ๋ ํ๋ก์ธ์ค(multi-threaded process)'๋ผ๊ณ ํ๋ค. ํ๋์ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ง ์ ์๋ ์ค๋ ๋์ ๊ฐ์๋ ์ ํ๋์ด ์์ง ์์ผ๋ ์ค๋ ๋๊ฐ ์์ ์ ์ํํ๋๋ฐ ๊ฐ๋ณ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(ํธ์ถ์คํ)์ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ํ๊ณ์ ๋ฐ๋ผ ์์ฑ.. [ES6] Symbol ํ์ ์ฌ๋ฒ(Symbol)์ ES6์์ ์ฒ์ ์ ๋ณด์ธ, ์๋ก์ด ์์ ๊ฐ ํ์ ์ด๋ค. ์ฌ๋ฒ์ ์ถฉ๋ ์ผ๋ ค ์์ด ๊ฐ์ฒด ํ๋กํผํฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ, ํน๋ณํ '์ ์ผ ๊ฐ'์ด๋ค.(์ ๋์ ์ผ๋ก ์ ์ผํจ์ด ๋ณด์ฅ๋์ง๋ ์๋๋ค.) ์ฃผ๋ก ES6์ ํน์ํ ๋ด์ฅ ๋ก์ง์ ์ฐ๊ธฐ ์ํด ๊ณ ์๋์์ง๋ง, ์ฌ์ฉ์๋ ์ผ๋ง๋ ์ง ์ฌ๋ฒ์ ์ ์ํ ์ ์๋ค. ES6์๋ ์ฌ๋ฒ ๋ช ๊ฐ๊ฐ ๋ฏธ๋ฆฌ ์ ์๋์ด ์๋๋ฐ Symbol.create, Symbol.iterator ์์ผ๋ก Symbol ํจ์ ๊ฐ์ฒด์ ์ ์ ํ๋กํผํฐ๋ก ์ ๊ทผํ๋ค. ์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ฌ๋ฒ์ ์ ์ํ๋ ค๋ฉด Symbol() ๋ค์ดํฐ๋ธ๋ฅผ ์ฌ์ฉํ๋ค. Symbol()์ ์์ new๋ฅผ ๋ถ์ด๋ฉด ์๋ฌ๊ฐ ๋๋, ์ ์ผํ ๋ค์ดํฐ๋ธ '์์ฑ์'๋ค. ์ฌ๋ฒ์ ์ ์ฉ(private) ํ๋กํผํฐ๋ ์๋์ง๋ง(Object.getOwnPropertySymb.. ์ด์ 1 2 3 ๋ค์