CS/etc

[CS] 스레드(Thread)란?

앱붕이 2021. 3. 7. 13:00

스레드(Thread)

어플리케이션의 실행에 있어서 가장 기본적인 단위. 실행중인 어플리케이션은 최소 하나의 스레드로 구성된다.
각 스레드마다 별도의 스택이 있으며 각 스레드는 같은 어플리케이션에 있는 다른 스레드와 독립적으로 돌아간다.
스레드 끼리는 파일 핸들이나 메모리 같은 자원을 공유한다.
1
출처

네이티브 스레드(커널 레벨 스레트)

운영체제에서 생성하고 관리하는 스레드

녹색 스레드

운영체제 위의 소프트웨어 계층에서 구현된 스레드.
멀티코어를 활용할 수 없으며 동기 입출력을 구현하기 어렵다.
멀티코어 시스템이 주류를 이루게 되면서 녹색 스레드를 쓰지 않는 쪽으로 변함

선점형 스레딩(preemtive threading)

운영체제에서 아무때나 스레드 실행을 멈추고 다른 스레드를 실행시킬 수 있다. 때문에 운영체제 에서는 각 스레드에 조금씩 시간을 나눠주면서 여러 스레드를 돌아가며 실행시킨다.

컨텍스트 스위칭(context switching)

다른 스레드가 시작될 수 있도록 한스레드를 멈추는 것.

시스템 스레드

어플리케이션의 첫번째 스레드(메인스레드)

사용자 스레드

메인 스레드에서 할 수 없는, 혹은 하면 안되는 작업을 해야할 때 생성되는 스레드

이벤트 스레드

사용자 인터페이스를 화면에 표시하는 어플리케이션의 메인 스레드
이벤트가 일어날 때 까지 기다렸다가 그 이벤트를 어플리 케이션에서 처리 할 수있도록 전달하는 역할을 한다.
이벤트 스레드에서 이벤트를 제대로 처리하지 못하면 어플리케이션이 느려진다.
네트워크 접근 같은 작업은 스레드를 따로 만들어 처리해야 한다.

'CS > etc' 카테고리의 다른 글

[CS] REST? REST API? RESTful?  (0) 2021.03.10