#include<iostream>
#include <windows.h>
using namespace std;
//线程函数
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
int i = 0;
while (i < 20)
{
printf("i am from a threa,count=%d\n", i++);
}
return 0;
}
int main(int argc, char *argv[])
{
HANDLE hThread;
DWORD dwThreadID;
//创建一个线程
hThread = CreateThread(
NULL, //lpTreadAttributes 默认安全属性
//lpTreadAttributes一个指向SECURITY_ATTRIBUTES结构的指针,如果需要默认的安全属性:NULL
//如果希望此线程对象句柄可以被子进程继承的话,必须设定为一个SECURITY_ATTRIBUTES结构
//将它的bInheritHandle成员初始化为TRUE,如下列
//SECURITY_ATTRIBUTES sa;
//sa.nLength=sizeof(sa);
//sa.lpSecurityDescriptor=NULL;
//sa.bInheritHandle=TRUE; 使CreateThread返回的句柄可以被继承
//HANDLE h=CreateThread(&sa,......); 句柄h可以被子进程继承
NULL, //dwStackSize 默认堆栈大小
ThreadProc, //lpStartAddress 线程入口函数(执行线程的函数)
NULL, //lpParameter 传给函数的参数
0, //dwCreationFlags 指定线程立即运行
//dwCreationFlags 创建标志.如果是0,表示线程被创建后立即运行,
//如果指定为CREATE_SUSPENDED标志 ,表示线程被创建后处于挂起的状态,
//直到使用ResumeThread函数显示地启动先动为止/
&dwThreadID //lpThreadId 返回线程的ID号
);
printf("Now another thread has been created.ID=%d\n", dwThreadID);
//等待新线程运行结束
WaitForSingleObject(hThread, INFINITE);
//(要等待的对象的句柄
//要等待的时间)
//一个可执行对象有两种状态,未受信(nonsignaled)和受信(signaled)的状态,线程对象只有
//当线程运行结束时才达到受信状态,此时"WaitForSingleObject(hThread, INFINITE);"语句才会返回
CloseHandle(hThread);
return 0;
}
多线程
最新推荐文章于 2023-12-23 10:30:00 发布