profile image

L o a d i n g . . .

스레드 (Thread) 란?

스레드

- 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위

- CPU 사용하는 기본 단위를 뜻함

- 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있음, 이러한 방식을 멀티스레드 라고 함


멀티 스레딩 (Multi-Threading)

컨텍스트 스위칭을 통해서 이뤄짐

- 멀티 스레드란 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것

- 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유함


멀티 스레딩의 장점

- Non-Blocking 으로 처리 가능

// A 함수가 B 호수를 호출 할 때, B 함수가 제어권을 A 함수에게 바로 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것

- 리소스 자원 공유가 쉬움 (프로세스의 공유 메모리, 메시지 교환 (message-passing) 보단 쉬움)

- 프로세스보다 적은 오버헤드로 인해 문맥 교환 비용이 적음

- 확장성이 뛰어남


동시성

순차 / 병행 (동시) / 병렬

- 싱글 코어에서 멀티 스레드를 동작시키기 위한 방식

- 멀티 태스킹을 위해 여러 개의 스레드가 번갈아가면서 실행되는 성질

- 동시성을 이용한 싱글 코어의 멀티 태스킹은 각 스레드들이 병렬적으로 실행되는 것처럼 보이지만, 사실은 번갈아가면서 조금씩 실행되고 있는 것


병렬성

동시성과 병렬성의 차이, 화살표를 볼 것

- 멀티코어에서 멀티스레드를 동작시키는 방식

- 한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질


참고

1. https://karice.tistory.com/230 - 스레드와 동시성

2. https://velog.io/@gil0127/%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9CSingle-thread-vs-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-Multi-thread-t5gv4udj - 싱글스레드(Single thread) vs 멀티스레드 (Multi thread)

3.https://mentha2.tistory.com/245 - [OS] 동시성(Concurrency) vs 병렬성(Parallelism)

4. https://m.boostcourse.org/mo326/lecture/16866 - 동시성 프로그래밍과 비동기 프로그래밍

복사했습니다!