函数退出后如何通知线程? 请问我启动一个线程来执行某函数,该函数退出返回后如何通知线程? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 简单的可以用线程同步的原子操作也就是设置一个全局的bool,默认false.当你的子线程函数结束时,将其至true.主线程循环操作判断这个Bool什么时候true。复杂的可以使用消息或者event等等。 PostThreadMessage 你建个线程处理消息,用这个函数给他发消息PostMessage 给窗口发消息,这个最方便GetExitCodeThread 不断的用这个函数获取线程返回值,是STILL_ACTIVE的话还在运行WaitForSingleObject 等待线程句柄 俺有一个简便的方法:1、创建一个CEvent对象;2、启动线程,线程伪代码:{ ....... xxxxx(); WaitForSingleObject(m_hEvent, -1); .......}3、函数xxxxx():void xxxxx(){ //Do something ..... SetEvent(m_hEvent);} ExitThread然后WaitForSingeObject等待返回 误导别人啊,event 这么用,有什么用呢如果是主线程需要等待子线程的结果,可以在主线程创建子线程后,wait该线程handle,如果主线程不能阻塞在这里,子线程可以发消息给主,如果是win32程序的话 顶楼上的 再加Event纯属浪费 直接wait线程句柄就行了 俺写完了才发现那样多余,可CSDN不能修改帖子,MD。向LZ致歉 额,谢谢各位大虾,不过不知是大家没明白我的意思还是我表达的不清楚,我想用thread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)addFun,(void*)1,0,NULL);这样创建线程来执行addFun函数,函数退出后通知该线程结束,是这个意思,请问如何操作? 调用Invalidate()造成屏幕闪动的问题,请教... 请教高手:“参数不足,期待是1” dll与exe不是相同mfc库连接方式为何不能正确载入资源? 菜鸟问题 用DAO打开access2000数据库与access97数据库有什么区别 怎样知道一个HANDLE句柄的大小? 我得到桌面的句柄后想在上面乱写乱画,但不知为何不行?应注意哪些细节? listcontrol中的小问题 关于用PV3D开发虚拟图书馆的问题? 这个dll里有没有木马之类的东西啊? 有关内在映射文件的使用。 有学ogre的资料吗?
PostMessage 给窗口发消息,这个最方便
GetExitCodeThread 不断的用这个函数获取线程返回值,是STILL_ACTIVE的话还在运行
WaitForSingleObject 等待线程句柄
1、创建一个CEvent对象;
2、启动线程,线程伪代码:
{
.......
xxxxx();
WaitForSingleObject(m_hEvent, -1);
.......
}
3、函数xxxxx():void xxxxx()
{
//Do something
.....
SetEvent(m_hEvent);
}
如果是主线程需要等待子线程的结果,可以在主线程创建子线程后,wait该线程handle,如果主线程不能阻塞在这里,子线程可以发消息给主,如果是win32程序的话
俺写完了才发现那样多余,可CSDN不能修改帖子,MD。
向LZ致歉
thread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)addFun,(void*)1,0,NULL);这样创建线程来执行addFun函数,函数退出后通知该线程结束,是这个意思,请问如何操作?