. .NET 프레임워크는 C#을 위한 런타임 클래스 라이브러리입니다. .NET은 멀티스레드 환경입니다. 스레드는 프로세스 내 단일 순차적 제어 프로세스입니다. 스레드는 프로세스 내의 하나의 엔터티입니다. 프로세스는 여러 스레드를 가질 수 있으며, 스레드는 반드시 부모 프로세스를 가져야 합니다.
스레드는 일반적으로 읽기, 차단, 그리고 운영의 세 가지 기본 상태를 가집니다. 세 가지 기본 상태에서 나사의 다섯 가지 기본 연산이 도출된다. 먼저, 도출, 스레드는 프로세스 내에서 파생됩니다. 두 번째로, 스케줄링을 하고, 작업 상태에 들어갈 준비된 스레드를 선택하세요. 셋째, 차단입니다. 스레드가 실행 중 이벤트가 발생하기를 기다려야 한다면 차단됩니다. 넷째, 차단 해제(unblock)입니다. 이벤트가 시작되면 스레드가 차단 해제되어 준비 큐에 들어갑니다. 다섯째, 종료 시 스레드가 종료되고, 실행된 레지스터 컨텍스트와 스택 내용이 해제됩니다.
새 스레드는 아직 자원을 할당하지 않은 새로 생성된 스레드 객체입니다. 따라서 start() 또는 close() 메서드만 사용할 수 있습니다.
런 가능 상태는 start() 메서드가 실행된 후 스레드가 필요한 자원을 얻고 run() 메서드를 실행하도록 호출하는 상태를 말합니다.
Not Runable 상태는 다음 이벤트가 발생할 때 진입하는 상태입니다. suspend() 메서드가 호출되고, sleep() 메서드가 호출되며, 스레드가 wait ()를 사용해 조건 변수를 기다리고, 스레드가 I/O를 기다리고 있습니다.
Dead는 Run() 메서드가 반환되거나 다른 스레드가 stop() 메서드를 호출하면 스레드가 dead 상태에 들어갈 때를 말합니다. 아래는 Thread의 간단한 예시를 두 가지 소개합니다.
요약: 왜 Thread(멀티스레딩)를 사용하는가? 이는 메인 스레드가 막히는 것을 방지하기 위함이다. 많은 데이터를 처리하거나 시간이 많이 드는 메서드를 호출해야 한다면 Thread 멀티스레딩을 사용해야 한다.
본보기:
멀티스레딩 사용 미: 인터페이스가 응답하지 않습니다... 멀티스레딩이 사용되지 않기 때문입니다
|