C++多线程的简单使用

文章介绍了C++中的多线程编程,通过一个简单的代码示例展示如何创建和管理线程。在没有使用Sleep函数时,由于线程执行的并发性,打印结果可能出现混乱。加入Sleep函数后,线程按照顺序执行,结果变得有序。这说明了线程执行的非确定性和资源调度的影响。
摘要由CSDN通过智能技术生成

一.引言

在C++学习中,我们在初步学习的过程中写的程序都只可以在本地并且只可以被本主机访问。在此,我们会想要让别人也体验一下我们邪恶的程序的话,我们该怎么办呢?

        首先我们介绍的时多线程编程,就相当于我们的登录qq(电脑上)可以打开多个聊天框,我们的C++程序在调用本文件下的函数时,也只是使用了计算机一个线程的资源,如果要充分发挥电脑的功能的话,我们需要让cpu尽量动起来(不要像所谓的一核有难,七核围观)。为此,C++多线程应运而生。

二.我们来一个小例子吧

首先是多线程,我们需要引入的头文件

#include<iostream>
#include<thread>

然后,我们多线程中我们需要调用的函数

void funtion(int time){
    cout<<"this is"<<time<<"个线程"<<endl;
}

接下来就是我们的主函数了

int main(){
    std::thread threads[5];//创建一个进程数组
    for (int i = 0; i < 5; ++i) {
        threads[i] = std::thread(funtion,i+1);//为函数传入参数,即当前调用的是第几个线程
//        Sleep(1000);
    }
    for (int i = 0; i < 5; ++i) {
        threads[i].join();//等待线程结束,回收当前线程所占用的资源
    }
}

 哪个Sleep函数我是先注释掉的,我们先来看一下打印的结果

可以看到,这不是我们想要的结果。为什么呢?难道机器也会出错吗?

其实不是机器的问题,当函数调用的时候,我们计算机的一些处理器处理线程的能力好,然后会先结束并在屏幕完成打印,所以我们看到打印的结果是乱的。取消注释Sleep(1000)的时候,我们的结果又是正确的啦。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值