码迷,mamicode.com
首页 > 编程语言 > 详细

主线程退出问题

时间:2015-06-15 11:23:40      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:线程   主线程退出   

    主线程如果正常退出(即执行return返回),那么整个进程中所有的其他线程都会被清理;
    如果主线程内执行ExitThread函数进行退出,那么主线程会执行退出,但是其他的线程不会被清理,而会一直执行到正常退出为止。 
#include <iostream>
#include <process.h>
#include <Windows.h>
using namespace  std;
UINT WINAPI ThreadProc(LPVOID pParam)
{
    int p = (int)pParam ;
    int i = 20 ;
    while(--i)
        cout<<p<<"TRUE"<<i<<endl;
    cout<<"ThreadProc exit "<<endl;
    return 0 ;
}
void ThreadCreate()
{
    unsigned int  dwThreadID ;
    HANDLE hThread =(HANDLE) _beginthreadex(NULL,0,ThreadProc,(PVOID)0,0,&dwThreadID) ;
    if(hThread)
    {
        cout<<"Thread is created !"<<endl;
        CloseHandle(hThread) ;
    }
    HANDLE hThread1 =(HANDLE) _beginthreadex(NULL,0,ThreadProc,(PVOID)1,0,&dwThreadID);
    if(hThread1)
    {
        cout<<"Thread1 is created"<<endl;
        CloseHandle(hThread1) ;
    }
}
int main()
{
    ThreadCreate() ;
    cout<<"main1111 exit"<<endl;
    ExitThread(0) ; //主函数调用ExitThread退出,但是子线程并不会随之退出
    cout<<"main2222 exit"<<endl;
    return 0 ;//主线程退出,子线程也随之退出
}

结果1:主线程执行ExitThread函数进行退出,当主线程执行ExitThread 退出之后,主线程剩余的部分将不会执行,但是其他的线程都会运行,直到结束。
Thread is created !
0TRUE19
0TRUE18
0TRUE17
0TRUE16
0TRUE15
0TRUE14
0TRUE13
0TRUE12
0TRUE11
0TRUE10
0TRUE9
0TRUE8
0TRUE7
0TRUE6
0TRUE5
0TRUE4
0TRUET hread1 is created
3
0TRUE2
0TRUE1
ThreadProc exit
main1111 exit //主程序退出,整个结果中没有输出“main2222 exit”
1TRUE19
1TRUE18
1TRUE17
1TRUE16
1TRUE15
1TRUE14
1TRUE13
1TRUE12
1TRUE11
1TRUE10
1TRUE9
1TRUE8
1TRUE7
1TRUE6
1TRUE5
1TRUE4
1TRUE3
1TRUE2
1TRUE1
ThreadProc exit
请按任意键继续…

结果2:主线程执行 return 0 进行退出,其他线程都会直接终止运行。
Thread is created !
0TRUE19
0TRUE18
0TRUE17
0TRUE16
0TRUE15
0TRUE14
0TRUE13
0TRUE12
0TRUE11
0TRUE10
0TRUE9
0TRUE8
0TRUE7
0TRUE6
0TRUE5
Thread1 is created
0TRUE4
0TRUE3
0TRUE2
0TRUE1
ThreadProc exit
main1111 exit
1TRUE19
1TRUEmain2222 exit //主线程退出,线程Thread1并没有执行完成。
请按任意键继续…

主线程退出问题

标签:线程   主线程退出   

原文地址:http://blog.csdn.net/luojian5900339/article/details/46500249

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!