我想在主线程退出前等待另一个线程结束,再退出,可是......

chzhk007 2007-01-26 04:57:29
我用的是WaitForSingleObject(线程句柄,INFINITE);可是这个函数总是立刻返回,显然等待的线程不应该是这么快就结束了的,所以感觉不对劲.我把那个线程换成死循环的那种,WaitForSingleObject同样是立刻返回,这明显有问题啊.

大家帮帮忙,到底出了啥问题.
...全文
476 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chzhk007 2007-01-26
  • 打赏
  • 举报
回复
等不到,主线程就一直处于阻塞状态.能这么用那肯定是有把握能使这个函数返回的.
rickerliang 2007-01-26
  • 打赏
  • 举报
回复
等是不对的
万一等不到怎么办啊
chzhk007 2007-01-26
  • 打赏
  • 举报
回复
你说的可以是WaitForSingleObject确实让Proc结束后才返回的吗?
peimoxu 2007-01-26
  • 打赏
  • 举报
回复
DWORD WINAPI Proc(LPVOID lpParam)
{
Sleep(5000);
return 0;
}

void main()
{
unsigned long nThreadId;
HANDLE hThread;
hThread= CreateThread(NULL, 0, Proc, 0, 0, &nThreadId);
WaitForSingleObject(hThread, INFINITE);
}

可以的
chzhk007 2007-01-26
  • 打赏
  • 举报
回复
调用WaitForSingleObject,查看一下返回值
如果是WAIT_FAILED,GetLastError

================================
返回值是0,WAIT_OBJECT_0.


线程句柄不对
==============
为什么说线程句丙不对,请指教.
goodboyws 2007-01-26
  • 打赏
  • 举报
回复
线程句柄不对
WingForce 2007-01-26
  • 打赏
  • 举报
回复
调用WaitForSingleObject,查看一下返回值
如果是WAIT_FAILED,GetLastError
chzhk007 2007-01-26
  • 打赏
  • 举报
回复
信号有什么问题呢,除了同步对象外,WaitForSingleObject还可以用于等待线程和进程的.
JetLuo 2007-01-26
  • 打赏
  • 举报
回复
你设置得信号有问题

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧