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

[C#] 스레드(Thread)

by Kor-IT 2022. 7. 28.
반응형

스레드 Thread

 

스레드(Thread) 란?

스레드(Thread)는 하나의 프로세스 내에서 독립적으로 실행되는 실행 단위이다. 멀티 스레드(Multi Thread)는 뜻 그대로 여러 개의 스레드를 실행한다는 뜻이다. 여러 개의 스레드를 사용함으로써 병렬 처리가 가능해져 더욱 빠른 기대효과를 볼 수 있다.

멀티 스레드(Multi Thread) 는 한 번에 여러 스레드(Thread)를 실행하는 것이다. CPU 성능을 활용하여 한번에 많은 처리를 할 수 있다.

 

 

728x90

 

생성 및 호출방법

네임스페이스 : System.Threading
어셈블리 : System.Threading.Thread.dll

 

오버로드

생성자 설명
Thread(ParameterizedThreadStart) 스레드가 시작될 때 개체가 스레드로 전달될 수 있도록 하는 대리자를 지정하여 Thread 클래스의 새 인스턴스를 초기화한다.
Thread(ThreadStart) Thread 클래스의 새 인스턴스를 초기화한다.
Thread(ParameterizedThreadStart, Int32) 스레드가 시작될 때 스레드로 개체가 전달될 수 있도록 하는 대리자를 지정하고 스레드의 최대 스택 크기를 지정하여 Thread 클래스의 새 인스턴스를 초기화한다.
Thread(ThreadStart, Int32) 스레드의 최대 스택 크기를 지정하여 Thread 클래스의 새 인스턴스를 초기화한다.

 

 

속성

속성 설명
CurrentCulture 현재 스레드에 대한 문화권을 가져오거나 설정한다.
CurrentPrincipal 스레드의 현재 보안 주체(역할 기반 보안용)를 가져오거나 설정한다.
CurrentThread 현재 실행 중인 스레드를 가져온다.
CurrentUICulture 리소스 관리자가 런타임에 문화권 관련 리소스를 찾기 위해 사용하는 현재 문화권을 가져오거나 설정한다.
IsAlive 현재 스레드의 실행 상태를 나타내는 값을 가져온다.
IsBackground 스레드가 Background 스레드인지를 나타내는 값을 가져오거나 설정한다.
IsThreadPoolThread 스레드가 관리되는 스레드 풀에 속하는지를 나타내는 값을 가져온다.
ManagedThreadId 현재 관리되는 스레드의 고유 식별자를 가져온다.
Name 스레드의 이름을 가져오거나 설정한다.
Priority 세르드의 예약 우선 순위를 나타내는 값을 가져오거나 설정한다.
ThreadState 현재 스레드의 상태를 포함하는 값을 가져온다.

 

 

반응형

 

생성자

이해를 돕기 위해 아래와 같이 Method를 정의해 두었다.

class Program
{
    public static void Main(string[] args)
    {
        ...        
    }

    public void Work1()
    {
        Console.WriteLine("Work1");
    }

    public void Work2()
    {
        Console.WriteLine("Work2");
    }

    public void Work3(object message)
    {
        Console.WriteLine(message);
    }
}

 

방법 1.

Thread를 인스턴스 하면서 실행한 개체를 넘긴다.

Thread thread1 = new Thread(Work1)
{
    IsBackground = true,
    Priority = ThreadPriority.BelowNormal,
    Name = "Thread1"
};

thread1.Start();
[출력]

Work1

 

방법 2.

ThreadStart를 이용하여 대리자를 통한 방식으로 가능하다.

ThreadStart threadDelegate = new ThreadStart(Work2);
threadDelegate += Work1;

Thread thread2 = new Thread(threadDelegate);

thread2.Start();
[출력]

Work2
Work1

 

방법 3.

매개변수가 있는 경우를 알 수 있다.

Thread thread3 = new Thread(new ParameterizedThreadStart(Work3);
thread3.Start("Test1");

Thread thread4 = new THread(Work3);
thread4.Start("Test2");
[출력]

Test1
Test2

 

반응형

댓글