728x90
Multi-threading
" 하나의 프로세스 안에서 여러 개의 실행 스레드를 동시에 동작시키는 프로그래밍 기법 "
스레드는 프로세스 안에서 독립적으로 실행되는 작은 작업 단위입니다.
각 스레드는 프로세스 자원을 공유하면서 동시에 실행될 수 있으므로, Multi-threading 을 사용 하면 열 작업을 동시에 처리할 수 있습니다.
예 ) 웹 브라우저에서는 여러 개의 탭을 동시에 열어서 각 탭에서 병렬로 웹 페이지를 로딩하는 것이 Multi-threading 의 예 입니다
그러나 Multi-threading 은 디버깅이 까다로울 수 있어 공유 자원에 접근하는 경우 동기화 문제를 고려하여 사용해야 합니다.
병렬( Parallelism )
- 동시에 여러 작업을 실행하는 개념
- 다중 코어 프로세서를 사용하는 현대의 컴퓨터 시스템에서 병렬처리가 가능
- 각 작업은 독립적인 실행 흐름(스레드 또는 프로세스)에 할당되며, 각각이 별도의 처리 유닛에서 병렬로 실행됨
파일 다운로드 - 병렬
여러 파일을 동시에 다운로드하는 상황을 가정해봅시다. 컴퓨터가 다중 코어 프로세서를 가지고 있다고 가정하고, 각 코어는 별도의 스레드로 작동합니다. 파일 다운로드 작업을 병렬 처리한다면, 각 파일을 다운로드하는 별도의 스레드가 여러 개 생성되어 동시에 파일을 다운로드합니다. 따라서 모든 파일을 빠르게 다운로드할 수 있으며, 각 파일의 다운로드는 서로 독립적으로 처리됩니다.
동시성( Concurrency )
- 동시에 여러 작업을 시작하고, 동시에 진행되는 것처럼 보이게 만드는 개념
- 실제로 동시에 실행되는 것은 아니지만, 여러 작업을 빠르게 전환하여 빠르게 번갈아가며 처리하는 방식으로 구현
파일 다운로드 - 동시성
여러 파일을 다운로드하는 상황에서, 단일 스레드로 작업을 처리하는 경우를 생각해봅시다. 이 스레드는 한 번에 하나의 파일을 다운로드하고 있지만, 여러 파일이 동시에 다운로드되는 것처럼 보입니다. 왜냐하면 한 파일의 다운로드 작업이 블로킹되거나 대기 상태에 들어갈 때, 다른 파일의 다운로드 작업으로 전환되기 때문입니다. 이러한 빠른 전환으로 인해 파일 다운로드 작업이 동시에 처리되는 것처럼 보입니다.
병렬 처리 - 실제로 여러 작업을 동시에 처리하는 것
동시성 - 번갈아가며 작업을 빠르게 전환하여 동시에 진행되는 것처럼 보이게 하는 것
728x90
'3.multi-threading' 카테고리의 다른 글
sleep() vs wait() / notify() vs notifyAll() (0) | 2023.07.27 |
---|---|
스레드의 여러가지 상태 (0) | 2023.07.26 |
runnable과 callable의 차이는 ? (0) | 2023.07.25 |
데몬 스레드란? / 스레드를 만드는 방법 (0) | 2023.07.24 |
스레드와 프로세스의 차이 (0) | 2023.07.21 |