多线程

#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值