본문 바로가기

프로그래밍&IT/C#

System.Threading 네임 스페이스 및 Thread클래스 관련



평소 나름 중요한 개념이긴한데,

사실 시스템 운영할때는 Timer빼고는 그렇게 많이는 안 쓰긴 했음.


System.Threading 네임스페이스 타입
타입 내용
Interlocked

다수의 스레드가 공유하는 타입에 대해 원자적(atomic) 작업 지원

Monitor lock 및 wait / signal 스레드 동기화 객체 제공
C#의 lock 키워드는 내부적으로 Monitor 타입 사용
Mutex 이 동기화 요소는 AppDomain 경계를 넘어서 동기화 수행하는데 사용
ParameterizedThreadStart 이 대리자는 메소드가 다수의 매개변수를 갖는 메소드를 호출할수있게 해준다
Semaphore 리소스, 특정 리소스 타입에 동시 접근할 수 있는 스레드의 수를 제한할수있게 해줌
Thread CLR 내부에서 수행되는 스레드를 나타냄.
Thread타입을 사용하면 원래의 AppDomain에서 스레드를 추가로 생성할수있다
ThreadPool 해당 프로세스 내에서 CLR이 관리하는 스레드 풀과 통신할 수 있게 해줌
ThreadPriority 스레드의 우선순위 수준(Highest ,Normal 등) 을 나타냄
ThreadStart 이 대리자는 해당 스레드에서 호출할 메소드 지정시 사용
ParameterizedThreadStart와는 달리, ThreadStart의 대상은 고정된 메소드 프로토타입을
가져야 한다
ThreadState 이 열거형은 스레드의 유효상태(Running, Aborted 등)를 지정하는데 쓰임
Timer 특정간격마다 메소드를 호출하는 데 필요한 매커니즘 제공
TimerCallback 이 대리자타입은 Timer 타입과 함께 사용됨

System.Threading.Thread 클래스
타입 내용
CurrentContext

현재 스레드가 실행되고 있는 컨텍스트를 반환하는 읽기 전용 속성

CurrentThread 현재 실행되고 있는 스레드에 대한 참조를 반환하는 읽기 전용 속성
GetDomain(), GetDomainID() 현재 실행되고 있는 스레드의 AppDomain에 대한 참조 혹은 AppDomain의 ID를
반환하는 메소드
Sleep() 현재 스레드를 지정된 시간 동안 멈춤

Thread 타입의 인스턴스 수준 멤버
타입 내용
IsAlive

스레드가 시작되었는지 나타내는 bool값 리턴

IsBackground 스레드가 백그라운드 스레드인지 나타내는 값을 가져오거나 설정
Name 스레드의 이름을 지정할수있도록 해줌
Priority 스레드의 우선순위를 가져오거나 설정.
우선순위는 ThreadPriority열거형 값을 사용
ThreadState 스레드 상태를 가져오며 이 상태값은 ThreadState 열거형 값 사용
Abort() CLR에게 스레드를 가능한 한 빨리 종료하도록 명령
Interrupt() 대기 상태의 현재 스레드에 대해서 인터럽트를 건다
Join() 지정된 스레드(Join()이 호출된) 가 종료될때까지 호출자 스레드를 블록시킨다
Resume() 멈춘상태(suspend)였던 스레드를 재개시킨다
Start() CLR에게 스레드를 가능한 한 빨리 실행하도록 명령
Suspend() 스레드를 잠시 멈춤
스레드가 이미 멈춘 상태면 아무 일도 하지 않는다

필요할때 참조로 써야겠네...