-
ThreadC# 예제 공부일기 2020. 7. 31. 19:53
실행중인 프로그램을 프로세스라고 한다. 운영체제는 이 프로세스를 CPU에 올렸다가 내렸다가 하면서 일을 하는데, 스레드란 프로세스 내부의 프로세스이다. 한 프로그램은 보통 하나의 스레드를 가지고 있다. 지금까지 했던 프로그래밍은 하나의 흐름 즉 하나의 스레드를 가지고 있었다. 하지만 여러 개의 스레드를 사용할 수 있다. 여러개의 스레드를 사용하는 것을 멀티스레드라고 한다.
이 멀티 스레드가 등장한 배경은 하나의 프로그램에서 복잡한 동시 작업을 요구하기 시작하면서 프로세스보다 더 작은 개념이 도입된 것이 스레드이다.
동시에 작업을 하는 것을 보기 위해 Thread(Delegate 메소드) 로 메소드에 Thread.Sleep 메소드로 일정시간 정지를 시킬건데 첫 메소드는 10초 두번째 메소드는 15초 세 번째 메서드는 20초라고 할 때 만약 한개의 스레드에서 이뤄진다면
10초+15초+20초로 총 45초가 걸릴 것이다. 하지만 스레드로 진행한다면 20초밖에 걸리지 않는다.
static void Main(string[] args) { Thread t1 = new Thread(threadFunc1);//특정 메소드를 Thread화 시킨다. Thread t2 = new Thread(threadFunc2); Thread t3 = new Thread(threadFunc3); t1.Start(); t2.Start(); t3.Start(); Console.WriteLine("주 스레드 종료!"); } static void threadFunc1() { Console.WriteLine("ThreadFunc1 run!"); Console.WriteLine("10초 후에 프로그램 종료"); Thread.Sleep(1000 * 10); Console.WriteLine("ThreadFunc1스레드 종료"); } static void threadFunc2() { Console.WriteLine("ThreadFunc2 run!"); Console.WriteLine("5초 후에 프로그램 종료"); Thread.Sleep(1000 * 5); Console.WriteLine("ThreadFunc2스레드 종료"); } static void threadFunc3() { Console.WriteLine("ThreadFunc3 run!"); Console.WriteLine("3초 후에 프로그램 종료"); Thread.Sleep(1000 * 3); Console.WriteLine("ThreadFunc3스레드 종료"); }
이때 주 스레드가 종료하더라도 나머지 스레드는 계속 돈다.
'C# 예제 공부일기' 카테고리의 다른 글
미니프로젝트 정리 (조원파트) NewMemberForm (0) 2020.08.08 미니프로젝트 정리 (조원파트) Login Form (0) 2020.07.31 소켓 프로그래밍 (네트워크) #3 (0) 2020.07.31 외부에서 MariaDB 접속하기 (0) 2020.07.31 RaspberryPi : 파이썬 MariaDB 서버 커넥션 (0) 2020.07.30