반응형
스레드(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
반응형
'Programming > C# & .NET' 카테고리의 다른 글
[C#] lock 문 사용법 (1) | 2022.08.03 |
---|---|
[C#] 멀티스레드 (Multi-Thread) (1) | 2022.08.02 |
[C#] Sequence contains no elements 오류 해결 (1) | 2022.07.05 |
[C#] JSON 을 Class 로 자동 생성 (JSON to Class Generator) (0) | 2022.07.01 |
[C#] JSON, JArray 직렬화, 역직렬화 간단 방법 (Newtonsoft.Json) (0) | 2022.06.30 |
댓글