|
안녕하세요...
스레드에 대한 초보적인 질문 몇가지만 하겠습니다.
다름이 아니라...
시리얼 통신에서 스레드에서 데이터를 보내고 받는 부분을 구현했는데요.
예를 들어
전송할 데이터..
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시간동안 다른 스레드들이 일을 시작하나요.
고수님들의 한마디를 기다립니다....
|