C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[38914] Re:Re:Re:쓰레드를 사용하여 작업을 하는데요
열씸! [cappuccino] 937 읽음    2005-01-25 20:52
쓰레드를 생성하는 자체에 오버헤드가 존재합니다.
따라서, 쓰레드가 생성되자 마자 어떤 태스크가 주어지면 견디기 힘들어지죠.
쓰레드는 쓰레드 답게 작고 빠르게 움직여야 좋죠.

흔히, 100 개 ~ 200개 정도씩 쓰레드 풀을 만들어
미리 생성시켜두고 쓰레드의 사용을 멈추어도 메모리에서 해제하지 않는 식의 처리가
성능에 유리합니다. 현재의 풀 사용율이 70%가 넘으면 여유시간에 다음 풀을 준비한다든지 하는 스캐쥴링이
사용되기도 하구요.

그런데 구현상 태스크가 쓰레드라는 물리적 기반으로 굳이 나뉠 필요가 없을땐...
그냥 프로세스 한 개(쓰레드 한 개 짜리)가 모든 접속을 처리하게 설계하는 경우도 많습니다.
즉시 응답이 가능한 테스크일 경우에 유효하겠지요. (DB 쿼리 같은게 필요 없는 단순 채팅이나...)

결국은 쓰레드란 것 도 단순한 매카니즘입니다.
CPU란 녀석은 쓰레드란 걸 알지 못합니다. OS가 제공해주냐 마냐의 문제니까요.
쓰레드가 낫냐 프로세스가 낫냐란 문제는 어느정도의 접속자가 어떤식의 태스크를 필요로 하는지에
의해 판단될 문제이지, 무조건 쓰레드를 쓴다고 가벼운것은 아니고,
멀티 프로세스 기반에 비해 멀티 쓰레딩 기반이 약간 가벼울 수 있다는 거죠.
프로세스 레벨의 컨텍스트 스위칭에 드는 비용 만큼요.
단일 프로세스/단일 쓰레드 기반이 위의 것들에 비해 훨씬 유용할 수도 있다는 걸 상기시켜 드리며...
조언 같지 않은 조언을 마무리해야겠네요.

관련 자료들을 찾아보시면 IOCP에 관한 내용도 보실수 있으실텐데... Win32 기반의 서버 솔루션이면
도입을 고려함직 합니다. (IOCP 기반에선 멀티 쓰레딩이 별 의미 없죠)

+ -

관련 글 리스트
38901 쓰레드를 사용하여 작업을 하는데요 쌩뚱맞은 초보;; 818 2005/01/25
38908     Re:쓰레드를 사용하여 작업을 하는데요 멀더 793 2005/01/25
38910         Re:Re:쓰레드를 사용하여 작업을 하는데요 쌩뚱맞은 초보;; 811 2005/01/25
38914             Re:Re:Re:쓰레드를 사용하여 작업을 하는데요 열씸! 937 2005/01/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.