쓰레드(Thread)
쓰레드 란?
쓰레드는 어떠한 프로그램 내에서 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 쓰레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티쓰레드라고 한다.
<위키 백과>
멀티프로세스와 멀티스레드는 양쪽 모두 여러 흐름이 동시에 진행되는 공통점이 있다. 하지만 멀티프로세스에서 각 프로세스는 독리적으로 실행되며 각각 별개의 메모리를 차지하고 있는 것과 다르게 멀티스레드는 프로세스 내의 메모리를 공유해 사용할 수 있다. 위키백과에서 나와 있듯이 쓰레드는 운영체제가 아닌 CPU시간을 할당하는 기본 단위이고, 프로세스는 하나 이상의 쓰레드로 구성 되는것이다. 또한 프로세스 간의 전환 속도보도다 스레드 간의 전환 속도가 빠르다.
쓰레드의 상태
Unstarted
쓰레드 객체를 생성한 후 Thread.Start() 메소드가 호출 되기 전의 상태
Running
쓰레드가 시작하여 동작 중인 상태.
Unstarted 상태의 쓰레드를 Thread.Start() 메소드를 통해 이 상태
Suspended
쓰레드의 일시 중단 상태.
쓰레드를 Thread.Suspend() 메소드를 통해 이 상태로 만들 수 있으며, Suspended 상태인 쓰레드는
Thread.Resume() 메소드를 통해 다시 Running 상태
WaitSleepJoin
쓰레드가 블록(Block)된 상태
쓰레드에 대해 Monitor.Enter(), Thread.Sleep(), Thread.Join() 메소드를 호출하면 이 상태
Aborted
쓰레드가 취소된 상태.
Thread.Abort() 메소드를 호출하면 이 상태가 됩니다. Aborted 상태가 된 쓰레드는 다시 Stopped 상태로 전
환되어 완전히 중지
Stopped
중지된 쓰레드의 상태
Thread.Abort() 메소드를 호출하거나 쓰레드가 실행 중인 메소드가 종료되면 이 상태
Background
쓰레드가 백그라운드로 동작되고 있음, Foreground 쓰레드는 하나라도 살아 있는 한 프로세스
가 죽지 않지만, Background는 여러개가 살아 있어도 프로세스가 죽고 사는 것에는 영향을 미치지 않는다.
하지만 프로세스가 죽으면 Background 쓰레드는 모두 죽음. Thread.IsBackground 속성에 true 값을
입력하면 쓰레드를 이 상태로 바꿀 수 있음.
쓰레드 라이프 싸이클
쓰레드 간단한 예제
학습 참고 :
1) https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)
2) https://nshj.tistory.com
3) https://codedragon.tistory.com/3526
4) https://dlgnlfus.tistory.com/295
5) https://acroama.tistory.com/m/43
'프로그래밍언어 > C#' 카테고리의 다른 글
C#) List / LinkedList (List.AddRange) (0) | 2019.06.05 |
---|---|
C#) struct와 class의 차이점 구조체와 클래스 (0) | 2019.03.01 |
C#) 리플렉션 Reflection (0) | 2019.02.20 |
C#) Action과 Func (람다식) (0) | 2019.02.16 |
C#) 캐스팅/ 암시적형변환 / 명시적 형변환 (0) | 2019.02.15 |