|
일단 루프상에서 플래그를 어디서 어떻게 체크하는냐에 따라 달라지겠지요.
하나의 함수내에서 루프를 돌면서 들어오는 이벤트에 따라 바로바로 처리를 해야한다면 제일 단무지(^^;;)한 방법은 루프 중간중간에서 해당 플래그를 계속 체크해야 되겠지요.
그렇지 않다면 결국 해당 플래그를 체크하기 전까지는 정해진 루프상의 내용들이 실행이 되겠지요.
아마도 도훈님께서는 루프의 시작시에 한번만 플래그를 체크하도록 하신것 같네요.
또 다른 방법은 쓰레드를 이용해 특정함수는 함수데로 처리를 하시고, OnRead 이벤트에 따라 들어온 데이터를 처리하는 루틴은 별도로 구동이 되도록 하셔야 하겠죠.. 그런데 이 두 루틴이 상호연관이 된다면 조금 더 주의를 기울이셔서 데이터 관리를 하셔야 합니다.
링버퍼를 구현을 하신다던지, 크리티컬섹션등을 이용을 하신다던지 하셔서 데이터나 메모리 충돌이 일어나지 않도록 주의하셔서 처리하시면 됩니다. 쓰레드에 관한 공부가 필요하겠지요.
그럼..
김도훈 님이 쓰신 글 :
: TClientSocket m_CSock;
: 이렇게 정의를 해서 통신을 하는 클라이언트 프로그램을 만들었는데....
: 특정함수에서 루프가 돌면서 read 이벤트가 발생하면 루프를 멈추고 들어온 데이타를 처리하는 프로그램을 작석중입니다.그런데 read 가 발생하고 나서 플래그가 바뀌면 루프가 멈추게 하고 싶은데 루프가 다 끝이 나야 read 이벤트가 처리가 되네요
: 루프 중간에 read 이벤트가 생기면 바로 처리 하도록 해주는 방법이 있을까요?
: 소켓은 nonblock 입니다.....
|