본문 바로가기
Programming/C#

c# 17 : Thread(스레드)

by 공부합시다홍아 2020. 6. 17.

프로세스와 스레드 ( Process & Thread )

프로세스

실행 파일이 실행되어 메모리에 적제된 인스턴스이다. 

가령 word.exe가 실행 파일이라면, 이 실행 파일을 실행한 것이 프로세스이다.

프로세스는 반드시 하나 이상의 스레드(Thread)로 구성됩니다. 

 

스레드

운영체제가 CPU 시간을 할당하는 기본 단위인데, 프로세스가 밧줄이라면 스레드는 밧줄을 이루는 실이라고 할 수 있습니다 

장점

  • 사용자 대화형 프로그램에서 멀티 스레드를 이용하면 응답성을 높일 수 있다는 점을 꼽을 수 있다.

  • 멀티 프로세스 방식에 비해 멀티 스레드 방식이 자원 공유가 쉽다는 것

  • 멀티 프로세스는 GUI가 없는 웹 서버같은 서버용 애플리케이션에서 많이 취급하는 구조이다. 

  • 프로세스끼리 데이터를 교환하려면 소켓이나 공유 메모리 같은 IPC(Inter Process Communication)를 이용해야 한다.

  • 멀티 스레드 방식에서는 그저 스레드끼리 코드 내의 변수를 같이 사용하는 것만으로도 데이터 교환을 할 수 있다.

  •  

멀티 프로세스 방식에 비해 멀티스레드 방식의 좋은점은 바로 "경제성"이다.

프로세스를 띄우기 위해 메모리와 자원을 할당하는 작업은 비용이 비싼데, 스레드를 띄울 때는 이미 프로세스에 할당된 메모리와 자원을 그대로 사용하므로 메모리와 자원을 할당하는 비용을 지불하지 않아도 된다 

 

System.Threading.Thread 사용 방법 

  1. Thread의 인스턴스 생성, 이 때 생성자의 매개 변수로 스레드가 실행할 메소드를 매개 변수로 넘깁니다.

  2. Thread.Start() 메소드를 호출하여 스레드를 시작

  3. Thread.Join() 메소드를 호출하여 스레드가 끝날 때까지 기다린다. 

 

스레드의 일생과 상태 변화 

상태 

  • Unstarted : 스레드 객체를 생성한 후 Thread.Start() 메소드가 호출되기 전의 상태

  • Running : 스레드가 시작하여 동작 중인 상채

  • Suspended : 스레드의 일시 중단 상태

  • WaitSleepJoin : 스레드가 블록 된 상태

  • Aborted : 스레드가 취소된 상태

  • Stopped : 중지된 스레드의 상태 

  • Background : 스레드가 백그라운드로 동작하고 있음을 나타낸다. 

 

 

728x90

'Programming > C#' 카테고리의 다른 글

C# 18 : 네트워크 프로그래밍1  (2) 2020.06.17
C# 16 : File(파일)  (0) 2020.06.17
c# 15 : 리플랙션  (0) 2020.06.15
C# 14 : 람다식  (0) 2020.06.15
C#_13 : WinForm으로 만드는 사용자 인터페이스1  (0) 2020.06.12