一个关于线程、socket和定时器的问题,please help me!
onjun 2001-02-13 11:02:00
我在写一个thread,socket,timer相关的程序。
描述:
完全 API 编程。
在线程中创建 socket(阻塞模式),进行通信。
我要设定一个定时器 timeout,如果没有通信(空闲)的时间大于timeout,
杀掉当前线程。
关键词: 阻塞,计时,杀掉线程。
我的做法:
static void CALLBACK TimeProc(hwnd,msg,idEvent,time)
{
PostThreadMessageBox((DWORD)idEvent,WM_CLOSE,0,0);
AfxMessageBox("Now kill thread");
}
MYCtrlFun(LVOID lParam)
{
id=GetCurrentThreadId();
::SetTimer(NULL,(UINT)id,2000,TimeProc);
while(TRUE)
{
// do my work
recv(...);
// then
send(...);
...
}
}
发现问题:
程序执行到 TimeProc 的时间 不是 2000(两妙),而是更长。
有时候没有执行到 TimeProc,因为我没有看到"Now kill thread"对话框。
请大家帮忙!
谢谢