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
[55908] Re:1ms 쓰레드를 돌리고 싶은데 안되네요 ;;
Intotheblue [makerjh] 1673 읽음    2009-01-28 10:36
요즘 윈도우는 어떤지 모르겠습니다만..

NT 4.0 시절에.. MS 말한 태스크 스위칭 시간은 4~16ms 입니다.
리얼타임 OS 가 아닌 관계로 .. 일정하게 나오지 않습니다.

아주 정확한 타임 스케쥴링이 필요하다면...
리얼타임 OS 나.. 기타 다른 시스템을 고려해 보셔야 합니다.

지금도 나오는지 모르겠습니다만..
윈도우를 러일타임 OS 처럼 1ms 가능하게 해주는 별도의 제품이 있긴 한데..
가격이 제법 비쌉니다.
이름이 아마 RTX 인가 그럴겁니다.

검색해 보시면.. 멀티미디어 타이머와..
기타 방법들로 가능하다고 하시는 분도 있습니다만..
제 경험으로는 .. cpu 점유율 20% 이하대로는 힘들지 않을까 싶네요..


똥꼬베이베 님이 쓰신 글 :
: HANDLE ThreadHandle;
: bool   ThreadEnable;
:
: void __fastcall StartThread(void)
: {
:     //Thread #1.
:     ThreadEnable = true;
:     ThreadHandle = CreateThread(NULL , 0 , (LPTHREAD_START_ROUTINE)Loof, NULL , 0 , &dwTimerId);
:     SetThreadPriority(ThreadHandle , THREAD_PRIORITY_TIME_CRITICAL);
: }
:
: //----------------------------------------------------------------------------
: void __fastcall EndThread(void)
: {
:     //Thread #1.
:     ThreadEnable = false;
:     ::ResumeThread(ThreadHandle
:     while (::GetExitCodeThread(ThreadHandle, &dwTimerId{
:         if (dwTimerId == STILL_ACTIVE) continue;
:         else break;
:         }
:     ::CloseHandle(ThreadHandle);
: }
:
: //----------------------------------------------------------------------------
: WORD Loof(void)
: {
:
:     //Execute.
:     while (ThreadEnable) {
:
:             Sleep(1);
:
:         }
:     return 0L;
: }
:
: 이런식으로 구성을 했는데 지금 다른 컴퓨터들에서도 실험 해봤는데 좀 사양이 괜찮으면 1ms정도로 돌다가 가끔 15정도로 튀고요. 제 컴은 구려서 그런지 아예 15정도로 돕니다.
: 저기서 Sleep(1)을 Sleep(0)으로 하면 1ms 안으로 들어 오는데 cpu가 50프로 넘어 가면서 굉장히 힘들어 합니다.
:
:     요약
:       1.  쓰레드 안에 Sleep(1)을 넣으면 씨피유는 괜찮으나 속도가 15미리 정도 나온다.(컴퓨터 마다 조금 다를수 있음)
:       2.  쓰레드 안에 Sleep(0)을 넣으면 씨피유가 50프로 넘게 되고 속도는 1미리 언더로 떨어 진다.
:       3.  즉 한 5미리 정도로 돌리면서 씨피유 부하율이 20프로 정도 나오게 할수 없습니까?

+ -

관련 글 리스트
55886 1ms 쓰레드를 돌리고 싶은데 안되네요 ;; 똥꼬베이베 1350 2009/01/23
55908     Re:1ms 쓰레드를 돌리고 싶은데 안되네요 ;; Intotheblue 1673 2009/01/28
55909         Re:Re:1ms 쓰레드를 돌리고 싶은데 안되네요 ;; 똥꼬베이베 1863 2009/01/28
55889     Re:1ms 쓰레드를 돌리고 싶은데 안되네요 ;; 장성호 1736 2009/01/23
55907         Re:Re:1ms 쓰레드를 돌리고 싶은데 안되네요 ;; 똥꼬베이베 2185 2009/01/28
55888     Re:1ms 쓰레드를 돌리고 싶은데 안되네요 ;; 재일이 1781 2009/01/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.