|
멀티쓰레드를 생성(약 20개쯤)하여 UDP소켓을 이용하여
데이타를 전송하는 프로그램을 작성하였습니다.
쓰레드상에서 다음과 같이
void __fastcall ThreadProc::Execute()
{
..................
// A1
EnterCriticalSection(&CriticalSection);
dxinfo[ChanNo].ip_receive = 0;
Form1->udp2->RemoteHost = HostIP;
Form1->udp2->SendBuffer(buff,31,30);
LeaveCriticalSection(&CriticalSection);
}
멀티쓰레드에서 데이타를 보내야 하니까 CriticalSection을 이용하여
쓰레드간에 동기화를 시키고 빌더에 있는 UDP 컴포넌트를 이용하여 다른
PC에 데이타를 전송하는 프로그램입니다.
그런테 하루에 1번쯤 A1부분에서 멈춰져 있습니다.
전체 쓰레드가 멈춘것인지 1개 쓰레드만 멈춘것인지 모르겠지만
종료후 다시 실행하면 예전같이 다시 돌아가고 왜 가끔가다 1번씩
이상이 있는지 원인을 모르겠슴다.
어느 부분에서 논리적인 에러가 있나요.
EnterCiriticalSection으로만 사용하면 멀티쓰레드에서 사용하는데
이상은 없는것이죠..
|