- Thread 생성과 관리를 응용 프로그램 개발자가 아닌 compiler와 runtime library에게 넘겨주는 것
- 멀티코어 병렬 처리를 사용하는 프로그램 설계에 사용
컴파일러에서 멀티쓰레딩 지원
- Open MP
- GCD (Grand Central Dispatch)
멀티쓰레딩 관리 방법
- Thread Pool
Multithreaded server에서의 잠재적 문제점
- thread 생성 오버헤드 : 요청마다 thread를 생성하는 데 시간이 소요됨
- thread 수가 증가에 따른 자원 고갈 가능성 -> thread 수에 제한이 필요
해결책 -> Thread pool
- 프로세스를 시작할 때에 일정한 수의 thread들을 thread pool에 미리 생성하여 대기함
- 요청을 받을 때마다 pool에 있는 한 thread를 깨워서 사용
장점
- 빠른 속도 - 새 thread 생성 소요시간보다 기존 thread로 서비스하는 것이 더 빠름
- 동시 존재 thread 수 제한 - Pool의 크기
- task 생성 방법을 task에서 분리하면 task 실행을 다른 방식으로 할 수 있음 - 주기적 실행, 일정시간 후 실행 등
OpenMP (Open Multi-Processing)
- C, C++, Fortran 컴파일러의 directive와 API로 multithreaded 프로그래밍 지원
- 공유 메모리 환경에서의 병렬 프로그래밍 지원
GCD (Grand Central Dispatch)
- Apple Mac OS X, IOS 운영체제에서 지원
- C/C++ 언어의 확장, API, Runtime library로 제공
- 병렬 섹션을 구분하여 쓰레딩 관리 자원 - 블록 표시 ^{}
- 블록들은 dispatch queue에 넣고, queue에서 제거될 때에 thread pool에서 가용 thread에 선택하여 할당함
4.4 Thread 라이브러리 (0) | 2020.04.30 |
---|---|
4.3 다중 쓰레드 모델 (0) | 2020.04.30 |
4.2 멀티코어 프로그래밍 (0) | 2020.04.30 |
4.1 쓰레드 개요 (0) | 2020.04.24 |
3.6 클라이언트-서버 시스템에서의통신 (0) | 2020.04.24 |
댓글 영역