반응형
멀티스레드(Multi-Thread) or 다중 스레드는 한 번에 여러 개의 스레드를 사용하는 방식이며 CPU의 성능을 활용하는 프로그래밍 기법이다. 한 번에 여러 개의 작업 or 명령을 실행할 수 있다.
기본적으로 프로세스(process) 실행시 메인 스레드(Thread)가 실행되는데 바로 이것을 메인 스레드(Main Thread)라고 한다.
멀티스레드가 사용되는 경우는 통신, 파일 로딩, DB 등 한번에 여러 개의 작업이 필요시 사용된다.
기본적인 스레드(Thread) 사용 방법은 이전 포스팅을 해놨기 때문에 사용법을 모르는 분들은 이전 포스팅을 보고 오길 바라며 해당 링크를 남겨두겠다. [2022.07.28 - [Programming/C#] - [C#] 스레드(Thread)]
728x90
메서드 3개를 서로 다른 스레드로 실행
[Environment]
IDE : Visual Studio 2022
Framework : .Net 6
Project : Console Project
class Program
{
public static void Main(string[] args)
{
Program program = new Program();
Thread thread1 = new Thread(program.Work1);
Thread thread2 = new Thread(program.Work2);
Thread thread3 = new Thread(program.Work3);
thread1.Start();
thread2.Start();
thread3.Start("Work3");
}
public void Work1()
{
for (int i = 0; i < 5; i++)
{
Thread.Sleep(100);
Console.WriteLine($"1-{i}");
}
Console.WriteLine("Work1");
}
public void Work2()
{
for (int i = 0; i < 5; i++)
{
Thread.Sleep(200);
Console.WriteLine($"2-{i}");
}
Console.WriteLine("Work2");
}
public void Work3(object message)
{
for (int i = 0; i < 5; i++)
{
Thread.Sleep(300);
Console.WriteLine($"3-{i}");
}
Console.WriteLine(message);
}
}
[출력]
1-0
2-0
1-1
3-0
1-2
2-1
1-3
1-4
Work1
2-2
3-1
2-3
3-2
2-4
Work2
3-3
3-4
Work3
출력 순서를 보면 0.1 초 차이로 구분을 지었으며 순차적으로 실행된 모습이 아닌 3개의 스레드가 실행된 모습을 볼 수 있다. 만약 순차적으로 실행되는 거라면 Wok1 > Wor2 > Work3 순으로 실행되어야 하지만 각각 다른 스레드로 멀티스레드 처리된 모습을 확인할 수 있다.
반응형
'Programming > C# & .NET' 카테고리의 다른 글
[C#] Json 직렬화/역직렬화 속성 제외하는 방법 (1) | 2022.09.14 |
---|---|
[C#] lock 문 사용법 (1) | 2022.08.03 |
[C#] 스레드(Thread) (1) | 2022.07.28 |
[C#] Sequence contains no elements 오류 해결 (1) | 2022.07.05 |
[C#] JSON 을 Class 로 자동 생성 (JSON to Class Generator) (0) | 2022.07.01 |
댓글