VC++中通过CreateThread创建的线程,当线程入口函数执行完后,线程自己会关闭吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++中通过CreateThread创建的线程,当线程入口函数执行完后,线程自己会关闭吗?相关的知识,希望对你有一定的参考价值。

不会自己关闭的。


正确的做法是:

// 保存线程句柄
HANDLE hThread = CreateThread(.....)

// 等待线程完成,如果是多线程的,需要调用WaitForMultipleObjects
WaitForSingleObjects(MAX_THREADS,hThread,TRUE,INFINITE);

// 最后关闭句柄
CloseHandle(hThread );
参考技术A 线程函数结束 线程就结束 当然是关闭了; 但是 线程句柄要手动closehandle的 亲

WIN32 创建线程CreateThread

#include <stdio.h>
#include <iostream>
#include <windows.h>

using namespace std;
//定义线程调用函数
DWORD WINAPI ThreadProc(LPVOID lpParamter)
{
    int iRunTime = 0;
    while(++iRunTime<10)//执行10次跳出
    {
        cout << "ThreadProc() is running!"<<endl;
        Sleep(10);
    }
    //ExitThread(-1);
    return 0;
}

int main()
{
  //定义变量接受线程返回ID unsigned
long ulThreadId = 0;
  //创建线程 HANDLE hThread
= CreateThread(NULL, 0, ThreadProc, NULL, 0, &ulThreadId);
  //关闭资源 CloseHandle(hThread);
//cout << ulThreadId <<endl; getchar(); //system("pause"); return 0; }

 

以上是关于VC++中通过CreateThread创建的线程,当线程入口函数执行完后,线程自己会关闭吗?的主要内容,如果未能解决你的问题,请参考以下文章

VC如何获得当前线程的ID

VC++ 线程同步 总结

在VC中,多线程如何调用类得成员函数?

c# 用Windows API CreateThread函数如何创建的线程

windows多线程 创建线程 CreateThread

VC中MFC创建了多线程,界面怎么还会有卡死现象,但程序在正确执行(可以执行出结果)