2020. 9. 10. 18:42ใ์ ๊ณต ๊ณผ๋ชฉ/์๋์ฐ ํ๋ก๊ทธ๋๋ฐ
์๋์ฐ ํ๋ก๊ทธ๋๋ฐ - C# ๊ธฐ๋ณธ๊ฐ๋ (2)
1) ๋ธ๋ฆฌ๊ฒ์ดํธ
๋ธ๋ฆฌ๊ฒ์ดํธ๋ ๋ฉ์๋๋ฅผ ๋์ ํด์ ์ฐ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ๋ฉ์๋ ํฌ์ธํฐ๋ผ๊ณ ํ๋๋ฐ ๋ค์ ์์ ๋ณผ ์ด๋ฒคํธ์ ์ค๋ ๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ ๊ฒ์ด๋ค.
๋ธ๋ฆฌ๊ฒ์ดํธ ํํ
delegate ๋ฆฌํดํ์ ๋ธ๋ฆฌ๊ฒ์ดํธ ์ด๋ฆ(๋งค๊ฐ๋ณ์);
๊ทธ๋ ๋ค๋ฉด ์ด delegate๋ฅผ ์ ๊ตณ์ด ์ฌ์ฉํ ๊น?
-์ฌ๋ฌ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฐธ์กฐํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ํ๋์ ํ๋ก์ ํธ ์์๋ ์์์ด ๋ง์ ๋ฉ์๋๊ฐ ์กด์ฌํ๋ค. ์ด๋ฅผ ํฌ๊ดํด์ ์ ์ฅํ ์ ์๋ ๊ฒ์ด delegate์ด๋ค.
-๋ธ๋ฆฌ๊ฒ์ดํธ ํ๋ก๊ทธ๋๋ฐ ์์๋ ์ด๋ ๋ค.
๋ธ๋ฆฌ๊ฒ์ดํธ ์ ์ -> ๋ฉ์๋ ์ ์ -> ๋ธ๋ฆฌ๊ฒ์ดํธ ๊ฐ์ฒด ์์ฑ -> ๋ธ๋ฆฌ๊ฒ์ดํธ ๊ฐ์ฒด์ ๋ฉ์๋ ์ฐ๊ฒฐ -> ๋ธ๋ฆฌ๊ฒ์ดํธ ํตํด ๋ฉ์๋ ํธ์ถ
2) ์ด๋ฒคํธ
์ด๋ค ์ฌ๊ฑด์ด ๋ฐ์ํ ๊ฒ์ ์๋ฆฌ๊ธฐ ์ํ ๋ฉ์ธ์ง.
์์๋ฅผ ๋ค์ด๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ํ์๊ฐ์ ์ ํ ๋ ๋น๋ฐ๋ฒํธ๊ฐ 8์์ด์์ธ๋ฐ 3์๋ง ์ ์๋ค๊ณ ํด๋ณด์. ๊ทธ๋ผ ๋น๋ฐ๋ฒํธ๋ฅผ 8์์ด์ ์ ์ผ๋ผ๋ ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ์ด ๋ ํ ๋ฐ ์ด๋ฌํ ๊ฒ๋ค์ด ์ด๋ฒคํธ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
์ด๋ฒคํธ ํํ
event ๋ธ๋ฆฌ๊ฒ์ดํธํ์ ์ด๋ฒคํธ์ด๋ฆ;
์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ด๋ ๋ค.
์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํตํด์ ์ด๋ ํ ์ฌ๊ฑด์ด ๋ฐ์ํ๋ฉด ์ด ์ฌ๊ฑด์ ํต์ง๋ก ์ธํด ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ๊ทธ์ ๋ํ ํ์๋ฅผ ํ๊ฒ ๋๋ค.
๋ํ ์ด๋ฌํ ๊ตฌ์กฐ๊ฐ ์ฒด๊ณ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ณต์ก๋๋ฅผ ์ค์ผ ์๊ฐ ์๋ค.
์ด๋ฒคํธ ํ๋ก๊ทธ๋๋ฐ ์์๋ ์ด๋ ๋ค.
-์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ ํํ์ ์ผ์นํ๋ ๋ธ๋ฆฌ๊ฒ์ดํธ ์ ์ -> ๋ธ๋ฆฌ๊ฒ์ดํธ ์ด์ฉํด์ ์ด๋ฒคํธ ์ ์ธ -> ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ ์์ฑ -> ์ด๋ฒคํธ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ ๋ฑ๋ก -> ์ด๋ฒคํธ ๋ฐ์
3) ์ค๋ ๋
์ค๋ ๋๋?
์ฐ๋ฆฌ๊ฐ ํํ ๊ตฌ๊ธ์ ์ฌ์ฉํ๊ณ ๋ค์ด๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ๊ฒ์์ ํ ๋ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋จ์ด ํ๋ก์ธ์ค์ด๋ค. ์ด ํ๋ก์ธ์ค๋ ์ฌ๋ฌ๊ฐ์ ์ค๋ ๋๋ก ๋์ด์๋ค. ์์ ์ฌ์์ ๋น๋์์ ๋, ํ ์ค๋ ๋๋ ์์ ์ ์ฌ์ํ๊ณ ๋ค๋ฅธ ์ค๋ ๋๋ ๊ฐ์ฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฑ ์ด๋ฌํ ์ญํ ์ ํ๋ ๊ฒ์ด ์ค๋ ๋์ด๋ค.
๋ฐฉ๊ธ ์์์ ๋งํ ๊ฒ์ด ''๋ฉํฐ ์ค๋ ๋"์ด๋ค.
"๋จ์ผ ์ค๋ ๋"๋ ์์ฐจ ํ๋ก๊ทธ๋จ๊ณผ ์ ์ฌํ๊ฒ ์์, ์คํ, ์ข ๋ฃ์ ์์๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
์ค๋ ๋์ ํ๋ก๊ทธ๋๋ฐ ์์๋ฅผ ๋ณด์.
-์ค๋ ๋ ๋ชธ์ฒด์ ํด๋นํ๋ ๋ฉ์๋ ์์ฑ -> ์์ฑ๋ ๋ฉ์๋๋ฅผ ์ค๋ ๋์์ ๋ธ๋ฆฌ๊ฒ์ดํธ์ ์ฐ๊ฒฐ -> ์์ฑ๋ ๋ธ๋ฆฌ๊ฒ์ดํธ ์ด์ฉํด์ ์ค๋ ๋ ๊ฐ์ฒด ์์ฑ -> ์ค๋ ๋ ์คํ ์์
์ค๋ ๋ ์์ค ์ฝ๋
using System;
using System.Threading;
class ThreadApp {
static void ThreadBody() {
Console.WriteLine("In the thread body");
}
public static void main() {
ThreadStart ts = new ThreadStart(ThreadBody);
Thread t = new Thread(ts);
Console.WriteLine("Start of main");
t.Start();
Console.WriteLine("End of Main");
}
}
๋จผ์ ๋ชธ์ฒด ๋ฉ์๋๋ฅผ ๋งจ์์ ์์ฑํ๊ณ , ts๋ผ๋ ๋ณ์์ ๋ชธ์ฒด ๋ฉ์๋๋ฅผ ์ฐ๊ฒฐ์ํจ๋ค. ๊ทธ๋ฆฌ๊ณ Thread ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ด์ฉํด์ t๋ผ๋ ์ค๋ ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค. ->์คํ.
์ถ๋ ฅ ์์๋
start --> end --> In the thread body ์์ด๋ค.
4) ์ ๋ค๋ฆญ
- ์๋ฃํ์ ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ง
- ํฌ๊ด ํด๋์ค๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ ๋ค๋ฆญ ์์ค ์ฝ๋
class Stack<StackType> {
private StackType[] stack = new StackType[100];
//...
}
์คํ ๋ณ์ stk1์ stk2๋ฅผ ๊ฐ๊ฐ ์ ์ํ ์คํ, ์ค์ํ ์คํ์ผ๋ก ๋ง๋ค์ด๋ณด์.
Stack<int>stk1 = new Stack<int>();
Stack<double>stk2 = new Stack<double>();
์ด์ฒ๋ผ ์ ๋ค๋ฆญ์ ์ด์ฉํ๋ฉด ์ ๋์ ์ผ๋ก <>์์ ์๋ฃํ์ ๋ฐ๊ฟ ์๊ฐ ์๋ค.
'์ ๊ณต ๊ณผ๋ชฉ > ์๋์ฐ ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋์ฐ ํ๋ก๊ทธ๋๋ฐ -Delegate (0) | 2020.09.17 |
---|---|
์๋์ฐ ํ๋ก๊ทธ๋๋ฐ - ํผ์ ๋ํ์ฌ (0) | 2020.09.10 |
์๋์ฐ ํ๋ก๊ทธ๋๋ฐ - C#ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ (0) | 2020.09.10 |
์๋์ฐ ํ๋ก๊ทธ๋๋ฐ - ์ฝ์๊ณผ ์ํผ(C#) (3) | 2020.09.04 |
์๋์ฐ ํ๋ก๊ทธ๋๋ฐ Code Convention (4) | 2020.09.04 |