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
[46137] Re:Re:볼랜드툴이 원래 그런가요?(스레드관련)
최우성 [] 1347 읽음    2006-08-11 00:48
미안합니다. 질문이 좀 그렇네요 ^^;
질문 내용은 이렇습니다.
일단 문제라고 보는건...

EX) 테스트환경
=> timer 를 구동합니다. 100ms로 인터럽트 구동합니다. 100ms 씩 에디터 박스에 글자를 표현합니다.
그럼 1초동안 10개나옵니다.

1) 제가 사용하는 피씨에서는 퍼포먼스가 나옵니다.
     -> 물론 제피시환경에서 개발하고 버그 잡고 테스트하니 문제가 없다고 봅니다.
     -> 에디터 박스에 10개의 글자가 잘 나옴니다.

2) 다른 피시에서는 안되는경우가 종종있다.
    -> 어느 피시(테스크탑)에서는 제 피씨 에서 나온만큼 성능을 내줍니다. 에디터 박스에 10개의 글자가 모두찍힘
    -> 특정 노트북에서는 속도가 느리다.(엄청) , 에디터박스에 7~8개정도 글자가 나옴니다.

*** 볼랜드 툴로 개발해야겠다는 생각이 들면 위의 내용과비슷하게 부하를 걸어보면서 성능을 테스트 해보았습니다.
초기 딸랑 폼하나에 타이머 하나 에디터박스하나면 가볍다고 생각합니다.
현재 완료된상태는 메인 스레드 하나에 타이머가 3개 에 그래프에 TAB 합이 6개입니다. 물론 운영할때는 (스레드 + 타이머1개 + TAB1) 이렇게  됩니다.

그런데 문제가 발생한게 다른 노트북사양에서  속도 차이가 생긴다는 겁니다.
1초에 100ms 씩 10개가 모두 잘 체워져야하는데... 7~8개씩 체워지는 현상입니다.

- 이렇게 답답하게 말씀드리면 콤포넌트나 로직이 잘못됬었다고 판단되나.. 제컴에서는 이상이 없으니 에러대체가
안대어있구요....

로직은 모듈별 전형적으로 구성하는 방법입니다......

메인 스레드는
        while(!Terminated)
        {
                Synchronize(callSyn);
        }
// 뭐 이런식입니다. 타이머도 영향을 안받을거고...
폼의 콤포넌트는 LMD 프리 버젼을 주로 사용했습니다. 그것도 문제 안된다고 봅구요...
스레드에서 하는일은 usb에서 데이터를 확인하는겁니다.
들어오는 데이터가 10바이트라면 첫번째 1바이트받기 위해서 1초를 기다리게 합니다.(제컴에서는)
그다음 타임오버값을 100ms를 주고 100ms안에 9개 데이터를 받지 못하면 FAIL처리 하는 구조입닏.
1초가 오버타임이지만 오버타임 걸린적은 물론 없습니다.
그런데 다른 피시에서는 1초에 받지 못하고 5초정도 여유를 줘야 받아냅니다. 전 이게 궁금해서 질문드리는겁니다.
10바이트 수신부은 while(1) 문입니다. 물론 while문 안에 Application->ProcessMessages();
까지 삽입했습니다.

프로그램 다시 내리게 생겻습니다. 으윽... 개인 프로젝트라 별문제는 없지만 몇주 밤샘하면서 작성했던건데
버리기엔 너무 아까워서 그럼니다....




왕대박 님이 쓰신 글 :
: 개인적으로 거의 대부분의 프로젝트를 C++Builder로 수행했지만, 모두 성공적이었습니다.
: 컴포트 12개이상를 오픈하여 통신하는 프로젝트도 잘 되고 있고,
: 많은 수의 소켓으로 통신하는 프로젝트도 잘 되고 있고,
: 하나의 어플에서 이종의 여러개의 DB의 데이터를 취합하는 프로젝트도 잘 되고 있고,
: 여러개의 DAQ카드를 모니터링 & 제어하는 프로젝트도 잘 되고 있고,
: 그래픽파트에서 OpenGL으로 표현하는 프로젝트 역시 아직도 잘~ 돌아가고 있습니다.
:
: >>결론적으로 볼랜드 툴은 원래 그렇지 않습니다.
: 질문내용만으로는 정보가 부족해서 도움을 드릴 수가 없군요.
:
: 마지막으로 같은 개발툴을 사용한다는 것만으로도 상당히 반가운 일입니다만,
: 님처럼 질문제목을 달고서 명쾌한 답변을 원하시는 것은  상당한 무리가 있습니다.
: 다시한번 잘~ 살펴보세요. 답은 항상 상식선에서 있습니다.
: 그럼, 즐프하세요.
:
: 최우성 님이 쓰신 글 :
: : 폼 디자인 하기 쉽고 이뿐콤포넌트들이 많아서 볼랜드 툴로 프로그램했는데요..
: :
: : 완성해놓고 문제점이 생겼습니다.
: :
: : 개발한 컴텨는 IBM T40에 램 512에서 아무탈없이 테스트하고 개발 했는데요..
: :
: : 문제는 다른 노트북에서 프로그램을 돌리니....  버버벅.....
: :
: : 제컴 1ms가 다른 컴텨 10ms정도 (느낄정도) 됩니다....원하는 결과는 물론 안되는거죠..
: :
: : 추측컨데 스레드쪽이 의심가는데....
: :
: : 로직은 이러합니다.
: :
: : 프로그램실행하게 되면 스레드는 일단 멈춰있는 상태이며 런!을 하면 스레드는 데이터 수신을 위해서
: :
: : 종료될때까지 운영됩니다. 물론 중간중간 데이터가 없으면 스레드쪽에서 리턴을 시키기 때문에 문제는 없을거라
: :
: : 보는데...
: :  이런 부분을 접해보신분 있습니까??  아무말씀이라도 좋은니.... 도움좀 부탁드림니다..
: : 이거원 프로그램이 몇주 투자한게 아까워서라도 원인을 찾고 싶은데요....

+ -

관련 글 리스트
46134 볼랜드툴이 원래 그런가요?(스레드관련) 최우성 1019 2006/08/10
46135     Re:볼랜드툴이 원래 그런가요?(스레드관련) 왕대박 1183 2006/08/10
46137         Re:Re:볼랜드툴이 원래 그런가요?(스레드관련) 최우성 1347 2006/08/11
46143             Re:Re:Re:볼랜드툴이 원래 그런가요?(스레드관련) 구대원 1490 2006/08/11
46147                 Re:Re:Re:Re:볼랜드툴이 원래 그런가요?(스레드관련) 최우성 1468 2006/08/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.