๊ณผ์
[๊ตฌํ๋ด์ฉ]
์ ๋ ฅ Thread
๋ ์์ ์์์ ์์ ๋ด์ฉ์์ฒ๋ฆฌ Thread
๋ก ์ ๋ฌํ๊ณ์ฒ๋ฆฌ Thread
๋ ์์ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ๋ด์ฉ์ ์ ๋ฆฌํ์ฌ ์ถ๋ ฅ
์กฐ๊ฑด
์ ๋ ฅ Thread
- 2๊ฐ Thread
๋ฏธ๋ฆฌ ์ ์๋ ํ์ผ
์ ์ฝ์ด์์ฒ๋ฆฌ Thread
๋ก ์ ๋ฌ- ํ์ผ์ ๋ค ์ฝ์ผ๋ฉด Thread ์ข ๋ฃ
์ฒ๋ฆฌ Thread
- 1๊ฐ Thread
- ์ ๋ ฅ Thread์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ List ์์ฑ
- ์ฒ์ ์์ ์ด ์ ๋ ฅ๋ ๋ ๊น์ง ์ฒ๋ฆฌ ์์ ์ ์งํํ์ง ์์(์ฒ์ ์์ ๋ฒํธ 0)
- ๋ง์ง๋ง ์์ ์ด ์ ๋ ฅ๋๋ฉด Thread ์ข ๋ฃ (9๋ฒ ์์ ์ด ์ ๋ ฅ๋๋ฉด ์ข ๋ฃ)
๊ตฌํ ์ฝ๋
using System;
using System.IO;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace ThreadEx
{
class MainApp
{
static List<(string, string)> list = new List<(string, string)>();
static void Main(string[] args)
{
Action<object> readFile = (object obj) =>
{
string c = (string)obj;
StreamReader sr = new StreamReader(new FileStream("c:\\test\\a" + c + ".txt", FileMode.Open));
while (sr.EndOfStream == false)
{
string str = sr.ReadLine();
string[] word = str.Split(',');
lock (list)
{
list.Add((word[0], word[1]));
}
}
sr.Close();
};
Action readList = () =>
{
int index = 0;
while (index < 10)
{
if(list.Count > 0) {
list.Sort();
if (index.ToString() == list[0].Item1) {
Console.WriteLine($"{list[0].Item1} : {list[0].Item2}");
list.RemoveAt(0);
index++;
}
}
else
{
continue;
}
}
};
Task t1 = new Task(readFile, "1");
Task t2 = new Task(readFile, "2");
Task t3 = new Task(readList);
t3.Start();
t1.Start();
t2.Start();
t1.Wait();
t2.Wait();
t3.Wait();
}
}
}
Output
0 : 0๋ฒ์์
1 : 1๋ฒ์์
2 : 2๋ฒ์์
3 : 3๋ฒ์์
4 : 4๋ฒ์์
5 : 5๋ฒ์์
6 : 6๋ฒ์์
7 : 7๋ฒ์์
8 : 8๋ฒ์์
9 : 9๋ฒ์์
- ์์ ์ฝ๋๋ 3๊ฐ์ ์ค๋ ๋์ ์ํด ํ์ผ์ ์ฝ๊ณ ๋ด์ฉ์ ์ถ๋ ฅํ๋ค.
- ์ค๋ ๋์ ์คํ์์๋
์ฒ๋ฆฌThread
=>์ ๋ ฅThread1
=>์ ๋ ฅThread2
์ด๋ค. - ์ด๋ ๊ฒ ์คํ์์๋ฅผ ์ ์ํ ์ด์ ๋ ๋ง์ผ ํ์ผํฌ๊ธฐ๊ฐ ๊ต์ฅํ ํฌ๊ณ ์ ๋ ฅ Thread๊ฐ ๋จผ์ ์คํ๋๋ค๋ฉด ์ฒ๋ฆฌ ์ค๋ ๋๊ฐ ์ผ์ง๋ฉด์ ์ฒ๋ฆฌํด์ผ๋ ๋ฆฌ์คํธ์ ํฌ๊ธฐ๊ฐ ๊ต์ฅํ ํด ์๋ ์์ ๋ฟ๋๋ฌ ๋ง์ผ List์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋์ด์ ๋ค๋ฉด ํ๋ก๊ทธ๋จ์ด ๋น์ ์์ ์ผ๋ก ์๋ํ ์ ์๋ค. => ์ด๋ฌํ ์ด์ ๋ก ํ์ฌ ๊ฐ๋ฐํ์ค ๋์๋ ์ฒ๋ฆฌThread๋ฅผ ๋จผ์ ๋์์ํจ ํ ์ ๋ ฅ Thread๋ฅผ ๋์์ํจ๋ค๊ณ ํจ.
- ์ถ๊ฐ๋ด์ฉ : ํ๋์ ๊ฐ์ฒด์ ํ ๋นํ ์ ์๋ ์ต๋ ํฌ๊ธฐ => LargeObject๋ฅผ ์ด์ฉํด์ ์ด๊ณผํ ์ ์์
์ถ๊ฐ๋ด์ฉ
- Entity Framework ORM ์ธ์คํด์ค ์์ฑ ์์ ๊ต์ก๋ฐ๊ธฐ๋ก ํ์!
'๐ป Programming Language > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
7๋ฒ์งธ ์คํฐ๋ (0) | 2022.04.09 |
---|---|
5๋ฒ์งธ ์คํฐ๋ (0) | 2022.04.09 |
4๋ฒ์งธ ์คํฐ๋ ์ดํ ์ ๋ฆฌ (0) | 2022.04.09 |
3๋ฒ์งธ ์คํฐ๋ ์ดํ ์ ๋ฆฌ (0) | 2022.04.09 |
์คํฐ๋) ๋๋ฒ์งธ ์คํฐ๋ ํผ๋๋ฐฑ ๋ฐ ์ง๋ฌธ ์ ๋ฆฌ๋ด์ฉ (0) | 2022.04.08 |