第一课:c++认识多线程

NO.1、什么是并发:

两个或多个独立活动的任务同时发生(一个程序执行多个独立的任务)

1.1、并发假象:

单核CPU通过上下文的方式实现进程并发

NO.2、什么是进程:

计算机中的程序关于数据集合上的一次活动(比如计算机任务管理的软件进程)

NO.3、什么是线程:

每个进程都有一个主线程,并且主线程是唯一的,每个进程只有一个线程

3.1、线程:

就是一个完整的代码运行通道

NO.4、并发实现:

4.1,多个进程实现并发(不在主要研究范围):

主要解决进程间通信问题:

同一台电脑上运行,主要提供管道,文件,消息队列,内存共享实现,不同电脑主要网络编程实现

4.2,单进程,多个线程实现并发(主要研究对象):

一个进程中所有线程共享内存控间的方式

NO.5、C++中的多线程头文件:

#include<thread>

5.1、用thread()创建线程,用join()线程处理函数  [join():是加入(汇合)线程,阻塞主线程]

5.2、用detach():分离,驻留后台。(使用会导致一些问题,慎用)

5.3、对同一个线程detach()join()只能用一次,不能二次被是使用

5.4、针对于detach()和join()被使用、提供joinable()进行判断,以防在写很多代码时,对函数处理

NO.6、案例分析:

6.1、如果printData()函数加入延时Sleep(5000) ,主线程main()被阻塞等待延结束,才执行print()函数
6.2、如果使用detach()分离,主线程main()没有等待printData()函数的延结束,而执行print()函数,printData()被遗留在后台

#include<thread>
#include<iostream>
#include <Windows.h>

using namespace std;
using namespace this_thread;



void print()
{
    cout << "干活..." << endl;
}

void printData()
{

    Sleep(5000);   
    cout << "睡觉..." << endl;
}


int main()
{

    thread t1(printData);
    if(t1.joinable())
        // t1.join();
        t1.detach();

    print();

    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值