CreateThread与_beginthreadex创建后线程的退出的不同方式

 unsigned int __stdcall TMain(void*)
{
    int i =0;
   while (1)
   {
       if(i ==10)
       {
            return 0;  //如果用CreateThread创建线程,退出之后,直接到卡主主线程的下一句执行,如果是_beginthreadex创建线程,直接到主线程地方等待退出
       }
       std::cout<<"OK"<        ++i;
   }

}

 unsigned long m_dwThreadID =0;

    void*m_hThread = CreateThread(NULL,
        0,
        (LPTHREAD_START_ROUTINE)TMain,
        NULL,//参数
        CREATE_SUSPENDED,//线程的状态
        &m_dwThreadID); // 线程ID  
    
    //ResumeThread(m_hThread); //线程挂起
    //CloseHandle(m_hThread);
   // void*m_hThread = (void*)_beginthreadex(NULL,0,TMain,NULL,CREATE_SUSPENDED,&m_dwThreadID);
    ResumeThread(m_hThread);


    WaitForSingleObject(m_hThread,0xFFFFFFFF); //卡主主线程
    CloseHandle(m_hThread);

你可能感兴趣的:(CreateThread与_beginthreadex创建后线程的退出的不同方式)