线程的创建释放与使用

2022-02-11 08:49:57 浏览数 (2)

线程处理函数
代码语言:javascript复制
DWORD WINAPI ThreadProc(LPVOID pParam)
{
    return 0;
}
创建线程(无传参&创建后立刻执行)
代码语言:javascript复制
DWORD nThreadID = 0;//保存线程ID
HANDLE hThread = NULL;//保存线程句柄
hThread = CreateThread(NULL,0,ThreadProc1,NULL,0,&nThreadID);//创建线程立刻执行,参数为0
创建线程(DWORD参数传递&创建后不会立刻执行)
代码语言:javascript复制
DWORD nValue = 100;//将变量传递出去
CreateThread(NULL,0,ThreadProc1,(LPVOID)nValue,CREATE_SUSPENDED,&nThreadID);//创建一个挂起线程(默认不会执行)
在线程处理函数中使用变量

DWORD nValue = (DWORD)pParam;

结束指定线程

TerminateThread(m_hThreadHandle,0); // 线程句柄

启动线程

ResumThread(HANDLE hThread);

挂起(暂停)线程

SuspendThread(HANDLE hThread);

结束线程

ExitThread

线程等待(除非线程挂起,不然不会执行后面函数)

WaitForSingleObject(HANDLE,INFINITE); // 等候线程结束

关闭线程句柄 (是关闭句柄,不是关闭线程,线程没结束,关闭句柄线程照样执行)

CloseHandle

等候多个对象事件
代码语言:javascript复制
HANDLE hAndle[2] = {NULL};
WaitForMultipleObjects(2/*句柄数量*/,hAndle/*句柄数组*/,TRUE/*TRUE等候所有句柄事件|FALSE等候其中一个句柄事件*/,INFINITE/*等候时间 无限等候*/);

0 人点赞