반응형
- 프로세스: 현재 실행중인 프로그램
- 스레드
- 운영체제가 프로세스 시간을 할당하는 기본 단위
- 순차적이지 않고, 여러 기능을 동시 다발적으로 실행할 때 사용
- 하나의 스레드를 한 명의 작업자로 비유함
- 여러 스레드에서 동시에 같은 데이터에 접근할 때 lock 키워드를 사용하여 크래시 문제 해결(스레드 동기화)
public class ThreadTest
{
public void Run()
{
Console.WriteLine($"메인 Thread 시작, ThreadId: {Thread.CurrentThread.ManagedThreadId}");
System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();
s.Start();
// ThreadRun 메서드 호출하는 Thread 생성
Thread t1 = new Thread(new ThreadStart(ThreadRun));
t1.Start(); // Thread 실행
Thread t2 = new Thread(new ThreadStart(ThreadRun));
t2.Start(); // Thread 실행
s.Stop();
Console.WriteLine($"메인 Thread 종료, {s.ElapsedMilliseconds} ms, ThreadId: {Thread.CurrentThread.ManagedThreadId}");
}
private void ThreadRun()
{
System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();
s.Start();
Console.WriteLine($"Thread 작업 시작, ThreadId: {Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(2000);
s.Stop();
Console.WriteLine($"Thread 작업 종료, {s.ElapsedMilliseconds} ms, ThreadId: {Thread.CurrentThread.ManagedThreadId}");
} // ThreadRun 메서드가 끝나면 Thread 종료
}
반응형
'C#' 카테고리의 다른 글
C# 숫자 3자리마다 콤마 표시(ToString) (0) | 2024.01.07 |
---|---|
C# Windows Forms(윈폼) 애플리케이션에서 콘솔 창을 함께 사용(AllocConsole) (0) | 2024.01.07 |
C# 제네릭 클래스 형식 매개변수 제약조건 (0) | 2022.01.10 |
C# 이터레이터(IEnumerable 인터페이스와 yield 키워드) (0) | 2022.01.06 |
C# 익명 형식(Anonymous type) 클래스를 선언하지 않은 인스턴스 (0) | 2022.01.06 |