多处理器编程

多处理器时代:单线程变成多线程(并发场景)
单处理器多线程下也能并发,那么多处理器的复杂点。。。。。
并发:有两个人同时做一件事情,不管是并发进程还是并发线程。
并发是一段时间内有多个任务,并行是同一时间点有多个任务。
并发会导致每个人做的事情的完成先后顺序啥的不同。
操作系统是最早的并发程序之一。
实现多处理器的malloc/free
并发的基本单位:线程
执行流拥有独立的堆栈/寄存器
共享全部的内部
从状态机视角将单线程拓展成多线程
在这里插入图片描述

单线程:局部代表一个单线程,全局变量和其他东西代表共享的内容
在这里插入图片描述

多线程并发状态
在这里插入图片描述

并发程序的每一步都是不确定的
create:在状态机中加入一个栈帧的链表
join:等待,等所有线程完成时再返回,否则死循环
操作系统会自动把线程放置在不同的处理器上
在后台运行,可以看到CPU使用率超过了100%
如何证明线程确实会共享内存?
线程有着独立的堆栈。
多线程并发问题存在
(1)原子性
两个线程对一个事件操作,会导致BUG
两个线程同时支付100元,跟数据库中的原子性类似,会导致并发问题,余额有可能出现2^64-100,计算机内2的补码-100.
在这里插入图片描述

lock,unlock保证原子性,可以阻止线程并发
(2)顺序性
编译器对内存访问“eventually consistent”的处理导致共享内存作为线程同步工具的失效
(3)可见性(最大的麻烦)理解并发程序的执行
多处理器编程:放弃对“程序”的旧理解
不原子,能乱序,不立即可见

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
多处理器编程艺术》是一本关于如何编写高效多线程代码的经典著作。本书以C++语言为基础,深入探讨了多处理器环境下的编程技巧和设计原则。 首先,本书讲解了多线程编程的基础知识和原理,包括线程创建、同步和通信等方面。读者可以了解到线程的概念、线程安全性以及常见的线程同步机制,如互斥锁、条件变量等。 其次,本书详细介绍了多线程编程中的常见问题和挑战,如竞争条件、死锁和饥饿等。通过分析这些问题的产生原因和解决方案,读者可以学会如何设计出可靠和高性能的多线程程序。 本书还提供了大量的实例和案例,展示了多处理器编程的实际应用。这些例子涵盖了计算密集型任务、I/O密集型任务和分布式任务等不同类型的应用场景,读者可以通过这些例子学习到多线程编程的具体技巧和方法。 最后,本书还介绍了一些高级主题,如锁的性能优化、并行算法和并发数据结构等。这些主题对于需要面对大规模数据和高并发访问的系统非常重要,读者可以通过深入研究这些问题,提高自己的多处理器编程能力。 总之,《多处理器编程艺术》是一本系统而全面的多线程编程指南,适合有一定编程基础的读者学习和参考。通过学习本书,读者可以掌握多线程编程的核心思想和技术,提高自己在多处理器环境下的编程能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

及可不遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值