방법1.
Execute()
{
int iPreTick=GetTickCount();
while(!Terminated)
{
//요기서 상태정보요청
int iCurTic=GetTickCount();
if((iCurTic-iPreTick)>=5000)
{
//
작업..
iPreTick = GetTickCount();
}
Sleep(10);
}
}
방법2.
Execute()
{
HWND Obj[2]={Handle,m_Event};
//Event는 thread의 종료및 기타 다른 목적으로 waiting중인 thread를 깨우기 위한
//win32 객체 event임
while(!Terminated)
{
DWORD rslt=WaitForMultipleObjects(obk,2,false,5000);
if(rslt==WAIT_TIMEOUT)
{
//
작업..
}
}
}
그밖에 다른 방법도 있을수 있음...
그럼..
사루짱 님이 쓰신 글 :
: 스레드를 처음 사용해보는지라 영 개념도 안잡혀서 이렇게 질문 드립니다.
:
: 우선 하려는 상황은 서버에 장비가 100개정도 붙는데요. 이 때 각 장비마다 5분마다 상태정보를 요청하게 되구요.
: 중간 중간 수동으로 여러가지 메세지를 전송하는 프로그램인데요.
: 지금은 그냥 클래스에서 타이머를 만들어. 5분마다 상태정보를 주고 받는데요. 이 때 몇몇 선택된 장비로 메세지를
: 전송 하면 몇몇 장비들은 데이터가 전송 되지만 뒤에는 거의 전송을 제대로 못하는 경우가 생기드라구요.
:
: 우선은 가장 중요한게 5분주기 상태정보와 수동 메세지의 전송을 100대장비에 안정적으로 하는게 목표구요.
:
: 상태정보요청을 스레드를 통해서 5분마다 할수가 있는건가요?
:
: ...... execute()
: {
: while(!Terminated)
: {
: //요기서 상태정보요청
: }
: }
:
: 이런식으로 해버리면 무한 반복 되면서 상태정보를 요청하는데 저기서 5분마다 한번씩 하게 하는 방법이 없나요?
: 이 부분에서 정확히 개념이 안서네요..
:
: 타이머로 먼저 5분을 재고 스레드를 생성해서 요청을 하는것인지.
: 스레드에서 타이머를 재고 요청을 해야하는지 초보적인 개념 좀 잡아주시면 감사하겠습니다.
:
: 스레드는 잘 몰라서 개념적으로 정리 좀 해주셨으면 합니다.
|