본문 바로가기

C#

C# 스레드(Thread)

반응형
  • 프로세스: 현재 실행중인 프로그램
  • 스레드
    • 운영체제가 프로세스 시간을 할당하는 기본 단위
    • 순차적이지 않고, 여러 기능을 동시 다발적으로 실행할 때 사용
    • 하나의 스레드를 한 명의 작업자로 비유함
    • 여러 스레드에서 동시에 같은 데이터에 접근할 때 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 종료
}

반응형