본문 바로가기
Programming/C# & .NET

[C#] 멀티스레드 (Multi-Thread)

by Kor-IT 2022. 8. 2.
반응형

멀티스레드 (Multi-Thread)

 

멀티스레드(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 순으로 실행되어야 하지만 각각 다른 스레드로 멀티스레드 처리된 모습을 확인할 수 있다.

 

 

반응형

댓글