스레드thread는 실 혹은 흐름이라는 의미를 가지고 있다.


스레드의정의

스레드는 컴퓨터 프로그램 내에서 독립적으로 실행될 수 있는 가장 작은 실행 단위를 말한다. 스레드는 프로세스 내에서 실행되며, 프로세스의 메모리와 자원을 공유한다.
스레드를 사용하면 하나의 프로세스 내에서 여러 작업을 동시에 수행할 수 있어 효율적인 멀티테스킹을 할 수 있다.


프로세스와의 차이?

프로세스는 스레드와 같이 독립적으로 실행할 수 있는 실행 단위를 말한다, 운영체제에서 실행 중인 프로그램의 인스턴스이다.

프로그램은 디스크에 저장된 실행 파일(정적인 코드와 데이터가 저장)이며, 이를 실행하면 운영 체제는 해당 프로그램의 코드를 메모리에 로드하고 실행할 준비를 한다. 이때 생성된 실행 중인 프로그램의 개별 복사본을 만드는데, 이 복사본을 프로그램의 인스턴스라고 하고, "프로세스"라고 말한다.

각 프로세스는 자체 주소 공간을 가지며, 다른 프로세스와 독립적으로 실행된다.

스레드는 프로세스 내에서 실행되는 가벼운 실행 단위이다.
스레드는 프로세스의 주소 공간을 공유한다.


스레드가 생성되고 종료되기까지 비교적 적은 오버헤드(overhead)를 가진다. (어떤 처리를 하기 위해 들어가는 간접적인 처리 시간이나 메모리)

프로세스는 독립적으로 실행되며, 하나의 프로세스가 오류로 인해 종료되더라도 다른프로세스에는 영향을 미치지 않는 데에 비해서, 동일한 프로세스 내의 스레드는 서로 영향을 미칠 수 있다.
하나의 스레드가 오류로 인해 종료되면, 해당 스레드가 속한 프로세스 내의 모든 스레드가 영향을 받을 수가 있다.

웹브라우저,텍스트 편집프로그램, 백그라운드 서비스 등은 프로세스가,

다중으로 창을 여는 기능, 노래가 자동으로 나오는 기능, 텍스트 편집기의 자동저장기능, 백그라운드 서비스 로그기록 저장 등은 스레드를 이용하는 것이 효율적이다.

프로그램을 실행시키는 데 핵이되는 스레드를 메인스레드라고 한다.
하나의 스레드는 하나의 작업만 할 수 있다.
작업이 완료되거나 중단되기 전까지는 다른 작업을 할 수가 없을 것이다.
메인스레드와 함께 여러 개의 스레드를 처리할 수 있도록 하는 멀티스레딩 기법을 사용한다.

profile
방가방가예요

0개의 댓글