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
[17806] 시리얼통신에서요(스레드 부분)....
blue_sky [] 1754 읽음    2002-04-20 11:55
안녕하세요...
스레드에 대한 초보적인 질문 몇가지만 하겠습니다.
다름이 아니라...
시리얼 통신에서 스레드에서 데이터를 보내고 받는 부분을 구현했는데요.
예를 들어

전송할 데이터..
for(int i=1; i<5; i++)
  SetEvent(hEvent[i]);

스레드...
CommProc()
{
  while(true)
  {
     WaitForSingleObject(hEvent1,INFINITE);

     Comm->WriteFile(data, size);
     Sleep(300);
     nSize = Comm->ReadFile(hComm,buf,nHeaderSize,dwRead,NULL);
     size = nSize;
     if(nSize < nHeaderSize)
     {
       for(int i=0; (size >= nHeaderSize) && (nReadCount < 30); i++)
       {
          nSize = Comm->ReadFile(hComm,buf+size,nHeaderSize-nSize,NULL);
          size += nSize;
          nReadCount++;
          Sleep(100);
       }
     }
        //Recv Data Process...
  }
}

이렇게 하구 시리얼 포트를 약5개를 열었습니다.
근데요 만약 1개만 통신하구 4개가 통신에서 Receive데이터를 받지 못하는 상황이 되면 통신이 되고있는 1개의 데이터 전송이 매우 늦어집니다.(1개 보내고 다음데이터 전송까지의 시간이...)
이일을 어떻게 처리해야 하는지 감이 오질않네요...
스레드들이 하나의 스레드에서 Sleep()을 하면 다른 4개의 스레드들도 멈춰버리나요...
아님 Sleep시간동안 다른 스레드들이 일을 시작하나요.
고수님들의 한마디를 기다립니다....

+ -

관련 글 리스트
17806 시리얼통신에서요(스레드 부분).... blue_sky 1754 2002/04/20
17817     Re:시리얼통신에서요(스레드 부분).... 꼴(이성렬) 1680 2002/04/21
17816     Re:시리얼통신에서요(스레드 부분).... 하느리 1944 2002/04/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.