C++ 简单的多线程例子

概要:创建一个线程,主线程执行时,有另外一个线程也在运行

主要步骤:

1、创建一个线程

2、创建线程所要执行的函数

代码:

#include <iostream>

// 因为需要windows的API函数
#include<Windows.h>

DWORD WINAPI Fun1Pro(
    __in  LPVOID lpParameter
);

int main()
{
    int index = 0;
    // main 函数是主线程
    //创建线程
    HANDLE hThread1;
    hThread1 = CreateThread(NULL,0,Fun1Pro,NULL,0,NULL);
    // 关闭句柄   关闭句柄,但没有关闭创建的线程
    // 只是关闭了主线程中此线程的句柄,是该线程的内核引用计数减1

    CloseHandle(hThread1);
   
    // 为防止子线程还未创建,主线程就退出可以添加 sleep() 让主线程暂停一小段时间
    Sleep(1);  // 暂停当前线程 单位毫秒

    // 让主线程循环输出这句话
    while (index < 10)
    {
        std::cout << "主线程正在运行 " << "\n";
        index++;
    }

    
    return 0;
}

// 主线程与线程 1在单CPU 下为交替运行
DWORD WINAPI Fun1Pro(
     LPVOID lpParameter
)
{
    int index1 = 0;
    // 线程 1 也循环输出这句话

    while (index1 < 10)
    {
        std::cout << "线程1正在运行" << "\n";
        index1++;
    }
    return 0;
}

运行结果图:

用到的主要函数:

1、创建线程函数:

HANDLE WINAPI CreateThread(

__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,    //   NULL S设置为缺省的安全性

__in SIZE_T dwStackSize,    // 指定初始提交栈的大小  以字节为单位,系统会四舍五入近似为最近的一个页面,页面是系统管理内存时的一个内存单位  如果设为0,则使用默认值

__in LPTHREAD_START_ROUTINE lpStartAddress,   // 指向所传参数类型定义的函数的指针,函数将被线程执行,表示线程的起始地址,作为线程的入口函数,函数的名字可以任取,但函数的定义必须遵照规定

__in_opt LPVOID lpParameter,   // 指定单独的值传递给线程

__in DWORD dwCreationFlags,   // 指定控制线程创建的附加条件 立即创建运行、创建后暂停运行、指定时间等

__out_opt LPDWORD lpThreadId    // 指向线程标识符的变量【out】

);

如果创建成功,会返回一个线程的句柄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值