반응형
아래 글은 C# 스레드(Thread) 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.
📃 참고자료
- C# 교과서(길벗 출판사) - 55단원 스레드 717 ~ 724페이지
- 유튜브 채널 VisualAcademy [C# 교과서 마스터하기 55. 스레드]
- 닷넷코리아 (https://www.dotnetkorea.com/)
https://www.youtube.com/watch?v=VZq7PqlUbyI
✳ 프로세스와 스레드
- 스레드는 운영체제의 자원이며 프로그램 안에서 독립적으로 실행할 수 있는 것(멀티태스킹 운영체제)
✳ 프로세스(Process)
- 운영체제로부터 할당 받은 메모리에 코드와 데이터를 저장 및 CPU를 할당 받아 실행 가능한 상태
- 현재 실행 중인 프로그램을 프로세스라고 합니다
✳ 스레드(Thread)
- 운영 체제가 프로세서 시간을 할당하는 기본 단위입니다.
C#의 메인 메서드 코드는 순차적으로 실행됩니다. 하지만 메인 메서드에 또 다른 메서드 단위로 프로그램을 작성해 놓고, 이를 스레드 개체로 실행하면 메서드의 실행 순서를 윈도 운영 체제에 맡길 수 있습니다.
그러면 순차적으로 실행되지 않고 반복적으로 여러 메서드를 나누어서 처리합니다.
스레드는 이처럼 순차적으로 처리되지 않고, 여러 기능을 동시 다발적으로 실행할 때 사용하는 개념이며, 이를 닷넷에서는 Thread 같은 클래스로 제공합니다.
✳ 예제코드
// 프로세스(Process) : 하나의 프로그램 단위(프로젝트)
// 스레드(Thread) : 프로세스안에서 실행하는 단위 프로그램(메서드)
using System;
using System.Diagnostics;
using System.Threading;
class 스레드
{
static void Main(string[] args)
{
//Win(); Sql(); Ide();
ThreadStart ts1 = new ThreadStart(Win);
ThreadStart ts2 = new ThreadStart(Sql);
Thread t1 = new Thread(ts1);
Thread t2 = new Thread(ts2);
Thread t3 = new Thread(new ThreadStart(Ide));
t3.Priority = ThreadPriority.Highest; // 우선순위 높게
t1.Start();
t2.Start();
t3.Start();
// 프로세스
Process.Start("IExplore.exe"); // 익스플로러 실행
Process.Start("Notepad.exe"); // 메모장 실행
}
private static void Ide()
{
DelayTime();
Console.WriteLine("[3] IDE : Visual Studio");
}
private static void Sql()
{
Thread.Sleep(3000); // 3초 딜레이
Console.WriteLine("[2] DBMS : SQL Server");
}
private static void Win()
{
DelayTime();
Console.WriteLine("[1] OS : Windows Server");
}
private static void DelayTime()
{
for (int i = 0; i < 100000000; i++) { } // 시간지연 메서드
}
}
반응형
'프로그래밍언어 & 프레임워크 > C#' 카테고리의 다른 글
C# 비동기 프로그래밍 (0) | 2021.06.22 |
---|---|
C# WPF 공부 시간관리 앱(포모도로 타이머 , To Do List 앱) (0) | 2021.06.22 |
C# 테스트 프로젝트와 단위 테스트(Unit Test) (0) | 2021.06.17 |
C# 클래스 라이브러리(Class Library) (0) | 2021.06.16 |
C# 튜플(Tuple) (0) | 2021.06.15 |