C++的并发世界(二)——初识多线程

0.引言

  C++的并发世界(零)和C++的并发世界(一)的东西真的对于我这种初学者难以理解,我确定从第一个多线程案例进行学习归纳总结。

1.多线程的目的

  ①将耗时的任务进行分解,进行实时响应;
  ②充分利用多核CPU处理数据;
  ③读写分离,解耦合设计,即数据流分离;

2.多线程例程解析

#include <iostream>
#include <thread>

void ThreadMain()
{
	std::cout << "begin main thread!" << std::endl;
}

int main()
{
	std::thread th(ThreadMain);//线程创建启动
	return 0;
}

以开始调试的方式执行该程序,会发现中断错误!
在这里插入图片描述
此时将源代码修改如下,可以正常执行:

#include <iostream>
#include <thread>

void ThreadMain()
{
	std::cout << "begin main thread!" << std::endl;
}

int main()
{
	std::thread th(ThreadMain);//线程创建启动
	th.join();//阻塞等待子线程退出
	return 0;
}

3.多线程概念总结归纳

①并发:指两个及以上的独立活动同时进行,即一个程序执行多个独立的任务,以往计算机,单核cpu某一个时刻只能执行一个任务。若要实现多任务,则需要通过操作系统采用时间片询方法进行多进程切换。多进程切换的方法属于伪并发,操作系统保存各个任务的各种状态、执行进度需要时间开销。随着硬件发展,出现了多处理器,能够实现真正的并行执行多个任务(硬件并发)
在这里插入图片描述
②可执行程序(文件):非常好懂,略;linux为可IO操作的文件。
③进程:正在执行的可执行程序。
④线程:一个进程只能有一个主线程。线程并不是越多越好,每个线程都需要一个独立的堆栈空间,线程之间的切换需要保存很多中间状态,切换会耗费本该属于程序运行的时间。
⑤多进程并发:在同一电脑上可采用管道,文件,消息队列,共享内存实现多进程并发;不同电脑则采用socket通信技术
⑥多线程并发:一个进程中所有线程共存地址空间,需要解决不同线程间数据一致性的问题

4.线程与进程优缺点

和进程相比,线程有如下优点:
①线程启动速度更快,更轻量级;
②系统资源开销更少,执行速度更快;
和进程相比,线程有如下缺点:
①要小心处理数据的一致性;
②以往多线程代码不能跨平台,因此从C++11,支持多线程,增强移植性

相关推荐

  1. C++线并发

    2024-04-02 22:58:01       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 22:58:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 22:58:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 22:58:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 22:58:01       20 阅读

热门阅读

  1. vi/vim编辑器

    2024-04-02 22:58:01       16 阅读
  2. 开源中文大语言模型汇总

    2024-04-02 22:58:01       15 阅读
  3. pip/conda导出或导入环境

    2024-04-02 22:58:01       14 阅读
  4. 迪米特法则

    2024-04-02 22:58:01       16 阅读
  5. 10个大幅提升MySQL效率的使用技巧

    2024-04-02 22:58:01       15 阅读
  6. 计算机笔记(1)

    2024-04-02 22:58:01       12 阅读
  7. 图像配准概述

    2024-04-02 22:58:01       13 阅读
  8. Permission Denial: package=android does not belong to uid=2000

    2024-04-02 22:58:01       16 阅读