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
[37595] Re:Re:Re:긴급] 조건을 구합니다.
civilian [civilian] 1088 읽음    2004-10-13 15:35
이런 경우라면 쓰레드를 사용한다고 해서 프로그램의 속도가 빨라지긴 어려울 것으로 생각됩니다.
왜냐하면, 각 쓰레드가 화면(Canvas)에 그리기 위해서는 화면을 독점적으로 사용할 수 있어야 하는데
그에 따른 오버헤드 때문에 더 느려지지 않을가 생각이 됩니다.

어떤 도형인지는 모르겠으나 7,000개 그리는데 10분이 소요된다는 것은 조금 이해할 수가 없군요.
좀더 빠른 알고리즘을 사용해보시길 권해드립니다.

GDI+도 유용할 것 같군요.


김용수 님이 쓰신 글 :
: 만약  FloodFill을 구현하는 Thread의 갯수를 상황에 맞게
: 변수로 조절하고 싶으면 Thread선언을 배열로 하면 될 것 같은데
: 문제는 Thread의 Execute에서
:
: n개의 FloodFill함수를 어떻게 동시에 실행 할 수 있는지요?
:
: 예를 들어 FloodFill로 영역을 채우는 함수는
:
: for (int i=0;i<N;i++)
: {
:      ...
:      Canvas->FloodFill(EX, EY, Canvas->Pen->Color, fsBorder);
:  
: }
:
: 로 되어 있었는데,
:
: 이를
: 함수 1은
:
: for (int i=0 ;  i<N/10  ;  i++)
: {
:      ...
:      Canvas->FloodFill(EX, EY, Canvas->Pen->Color, fsBorder);
:  
: }
: 함수2는
: for (int i=N/10  ;   i<2*N/10  ;  i++)
: {
:      ...
:      Canvas->FloodFill(EX, EY, Canvas->Pen->Color, fsBorder);
:  
: }
:
: ...
:
: 함수 10은
: for (int i=9*N/10  ;  i<10*N/10  ;i++)
: {
:      ...
:      Canvas->FloodFill(EX, EY, Canvas->Pen->Color, fsBorder);
:  
: }
:
: 으로 되어 있고 (함수 1~10은 상항에 따라 1~20 또는 1~40도 될 수 있습니다.)
:
: 이를 동시에 실행 시키고 싶습니다.
:
:
:
: 김태선 님이 쓰신 글 :
: : 쓰레드 예제는 빌더의 examples 밑에 간결하게 잘되어 있습니다.
: : 구현하실려는 목적이면 간단하니 어렵지 않을 것입니다.
: : 단 쓰레드는 쓸데 주의해야할 사항들이 있는데,
: : 전 시삽님이신 박지훈님의 글을 이 사이트에서  찾아서 보시면 많은 도움이 될 것입니다.
: :
: : 그럼...
: :
: : 김용수 님이 쓰신 글 :
: : : 안녕하세요. 고수님들의 조언을 바랍니다.
: : :
: : : 하는 일은 PaintBox에 moveto lineto로 약 7000개
: : : 정도의 다각형을 만들고 FloodFill로 각기 다른 색으로
: : : 그 다각형을 채우는 것입니다.
: : : 
: : : 구현을 되었는데, 문제는
: : :
: : : FloodFill로 약 7000개의 다각형 색을 칠하다 보니
: : : 속도가 너무 느려져서 7000개를 다 채우는 시간이
: : : 약 10분 정도 걸리게 된다는 점입니다.
: : :
: : : 예전에는 OPENGL로 그렸더니 이런 문제가
: : : 없었는데 이번에는 PaintBox로 그렸더니
: : : 이런 문제가 나오는 군요.
: : :
: : : 다시 OPENGL로 하자니 시간과 여러가지 문제가
: : : 있어 그냥 해결하고자 하다가 꽁수로
: : :
: : : Thread를 이용해서
: : : 1~100까지는 1번 Thread로,
: : : 101~200까지는 2번 Thread로 ,
: : : ...
: : : ???~7000까지는 ?번 Thread로 ,
: : : 동시에 FloodFill로 그리면 되지 않을까 생각은 드는데
: : :
: : : 이런 thread 는 어떻게 선언하고 사용해야 되는지 예제나
: : : 조언을 주실 수 있겠는지요??

+ -

관련 글 리스트
37564 긴급] 조건을 구합니다. 김용수 828 2004/10/12
37569     Re:긴급] 조건을 구합니다. 김태선 936 2004/10/12
37594         Re:Re:긴급] 조건을 구합니다. 김용수 865 2004/10/13
37595             Re:Re:Re:긴급] 조건을 구합니다. civilian 1088 2004/10/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.