๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

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..