吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2459|回复: 2
收起左侧

[C&C++ 转载] 【笔记】多个线程的正常结束

[复制链接]
2016wapjpc 发表于 2017-7-21 13:52
本帖最后由 2016wapjpc 于 2017-7-21 13:55 编辑

当我们在主线程中写下了子线程,子线程是正常结束,还是人为终止,就要求用 WaitForsingleObject( hHandle,-1)来判断,
是阻塞,还是向下走

当有多个 子线程时,我们是要全部结束后干事情,还 是一个结束后就可以做其它事情,都要判断
[
DWORD WINAPI THreadProc(
                                                LPVOID lpParameter        )
{        
        for(int i = 0;i<10;i++)
        {
                Sleep(1000);
                printf("--------------\n");
        }
        
        return 0;        
}

DWORD WINAPI THreadProc2(
                                                LPVOID lpParameter        )
{
        for(int i = 0;i<5;i++)
        {
                Sleep(1000);
                printf("++++++++++++++++++++\n");
        }
        
        return 0;
}

int main(int argc, char* argv[])
{   
        HANDLE hHandleArr[2];
        
        hHandleArr[0] = ::CreateThread(NULL,0,THreadProc,0,0,NULL);
        
        hHandleArr[1] = ::CreateThread(NULL,0,THreadProc2,0,0,NULL);
   
        DWORD dwCode2 =::WaitForMultipleObjects(2, hHandleArr,TRUE,-1);  //等待多个线程结束

        TCHAR szBuffer2[10];
        memset(szBuffer2,0,10);        
        sprintf(szBuffer2,"%x",dwCode2);
        MessageBox(0,szBuffer2,"线程阻塞2,正常退出",0);

   //当两个线程都结束了,就关闭线程
        CloseHandle(hHandleArr[0]);
        CloseHandle(hHandleArr[1]);


        //在WaitForMultipleObjects(2, hHandleArr,FALSE,-1); 当返回值是0时,表示第一个线程是已通知,当返回值是1时,表示第2个线程是已通知,也就是结束。

    //在WaitForMultipleObjects(2, hHandleArr,TRUE,-1); 当返回值是0时,表示两个线程都是已通知,两个线程都结束了。
        return 0;
}

]

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
我爱小彤 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yong990520 发表于 2017-7-21 14:50
新手,还在学习中
SeriousSnow 发表于 2017-7-21 15:08
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-14 20:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表