울음참고 개발공부
728x90

 

 

Multi-threading 
" 하나의 프로세스 안에서 여러 개의 실행 스레드를 동시에 동작시키는 프로그래밍 기법 "

스레드는 프로세스 안에서 독립적으로 실행되는 작은 작업 단위입니다.
각 스레드는 프로세스 자원을 공유하면서 동시에 실행될 수 있으므로, Multi-threading 을 사용 하면 열 작업을 동시에 처리할 수 있습니다. 

예 ) 웹 브라우저에서는 여러 개의 탭을 동시에 열어서 각 탭에서 병렬로 웹 페이지를 로딩하는 것이 Multi-threading  의 예 입니다 

그러나 Multi-threading 은 디버깅이 까다로울 수 있어 공유 자원에 접근하는 경우 동기화 문제를 고려하여 사용해야 합니다.

 

 

 


 

 

병렬( Parallelism )

 

  • 동시에 여러 작업을 실행하는 개념
  • 다중 코어 프로세서를 사용하는 현대의 컴퓨터 시스템에서 병렬처리가 가능
  • 각 작업은 독립적인 실행 흐름(스레드 또는 프로세스)에 할당되며, 각각이 별도의 처리 유닛에서 병렬로 실행됨

 

파일 다운로드 - 병렬

여러 파일을 동시에 다운로드하는 상황을 가정해봅시다. 컴퓨터가 다중 코어 프로세서를 가지고 있다고 가정하고, 각 코어는 별도의 스레드로 작동합니다. 파일 다운로드 작업을 병렬 처리한다면, 각 파일을 다운로드하는 별도의 스레드가 여러 개 생성되어 동시에 파일을 다운로드합니다. 따라서 모든 파일을 빠르게 다운로드할 수 있으며, 각 파일의 다운로드는 서로 독립적으로 처리됩니다.

 

 

 

 

동시성( Concurrency )

 

  • 동시에 여러 작업을 시작하고, 동시에 진행되는 것처럼 보이게 만드는 개념
  • 실제로 동시에 실행되는 것은 아니지만, 여러 작업을 빠르게 전환하여 빠르게 번갈아가며 처리하는 방식으로 구현

 

파일 다운로드 - 동시성

여러 파일을 다운로드하는 상황에서, 단일 스레드로 작업을 처리하는 경우를 생각해봅시다. 이 스레드는 한 번에 하나의 파일을 다운로드하고 있지만, 여러 파일이 동시에 다운로드되는 것처럼 보입니다. 왜냐하면 한 파일의 다운로드 작업이 블로킹되거나 대기 상태에 들어갈 때, 다른 파일의 다운로드 작업으로 전환되기 때문입니다. 이러한 빠른 전환으로 인해 파일 다운로드 작업이 동시에 처리되는 것처럼 보입니다.

 

 

 

 


 

병렬 처리 - 실제로 여러 작업을 동시에 처리하는 것

 

동시성 - 번갈아가며 작업을 빠르게 전환하여 동시에 진행되는 것처럼 보이게 하는 것 

 

 

 

 

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!