C/C++

C/C++ 多线程编程精髓

范蠡 · 资深开发工程师

1221人已买
详情
目录(25)

为什么要理解多线程编程?

多线程程序虽然强大,但也让原来的程序执行流程变得复杂和具有一定的不确定性,如带来资源的竞态问题,初学者或不能意识到带来的后果,或不能很好处理这个问题。

因为各种库和运行环境对操作系统多线程接口的封装,很多技术开发者做了很多年的开发,仍然只是仅知道如何调用库的「业务」程序员,他们只能面向搜索引擎编程,遇到稍微复杂一点的多线程逻辑就不知如何下手了。

本专栏从操作系统原理的角度介绍 WindowsLinux 两大操作系统在多线程编程技术的方方面面,从基础知识到高级进阶,既有高频多线程同步原语的详细介绍,也有实际开发中各种经验之谈,都是作者的工作技巧和踩过坑的经验教训总结。

通过本专栏的学习,初中级读者将可以理清多线程程序的执行原理和脉络,设计出强健的多线程程序,并能轻松驾驭 Windows 和 Linux 两大平台的多线程程序开发。

专栏结构

本专栏的内容主要分为以下三大方面。

  1. 操作系统层面上关于多线程和多线程协作的接口原理

    专栏将详细地介绍 Windows 和 Linux 操作系统层面上提供的各种多线程接口,理解并熟悉它们的使用后,读者在接触或者学习其他语言或者库提供的多线程功能时,可以快速地上手和掌握。

  2. 基于操作系统多线程理论衍生出来的一些扩展理论模型和应用

    专栏会带领读者利用各种操作系统提供的线程同步对象来实现一个线程池,进而引出生产者消费者理论模型,再进一步升华,引出所谓的消息中间件,如 Kafka、RabbitMQ。

    对于技术方案,我们不推崇重复造轮子,但是一定要具有重复造轮子的能力和了解轮子的制造原理。有了这项能力之后,在使用一些开源的消息中间件时,我们因为「知其然、知其所以然」才会把这些软件在项目中用得更好。

  3. 和多线程相关的一些实际开发中的技巧和经验

    或许你在面试时被面试官问到在实际开发中遇到过这些问题:

    • 进程的 CPU 使用率过高如何查找原因并解决?
    • 如何让一个程序只允许使用者运行一个实例?
    • 在实际开发中,避免死锁有哪些可以遵循的规则?
    • 什么是条件变量的虚假唤醒?虚假唤醒会带来什么问题?如何解决?
    • 如何设计高效的线程池和队列模型?
    • 如何在线程函数中访问类的成员变量和函数?

    专栏在保持主干脉络介绍的同时,也会穿插介绍一些与多线程相关的开发技巧和经验。

专栏整体结构图:

你的收获

  • 彻底掌握多线程编程原理和编码经验
  • Windows 和 Linux 操作系统的基本原理
  • 线程之间各种同步原语的适用场景和优缺点
  • 相关编程惯用法和手段技巧
  • 了解 Java、Go 等上层语言运行时环境提供的功能是如何基于操作系统 API 实现的
  • 实际开发中一些问题定位与排查

适宜人群

  • 希望深入掌握多线程编程原理的读者
  • 希望学习跨平台 C/C++ 程序编写的读者
  • 希望夯实操作系统原理知识的读者
  • 各大院校计算机专业学生和自学者

作者介绍

范蠡,资深开发工程师,担任过 C++ 客户端和服务器端开发主程,先后做过互联网金融交易系统、即时通讯、游戏服务器、音视频直播服务器等项目。作者公众号『高性能服务器开发』。

订阅须知

  • 本专栏形式为图文,共计 25 篇。
  • 付费用户可享受文章永久阅读权限。
  • 本专栏为虚拟产品,一经付费概不退款,敬请谅解。
  • 本专栏可在 GitChat 服务号、App 及网页端 gitbook.cn 上购买,一端购买,多端阅读。

订阅福利

  • GitChat 新用户购买立享五折优惠。
  • 凡付费购买过本作者其余专栏的用户,购买本专栏可享受专属特价 29 元。
  • 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。
  • 提现流程:请在 GitChat 服务号中点击“我—我的邀请—提现”进行提现。
  • 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」。(入群方式可查看第 3 篇文末说明)。

购买须知

  • 本课程内容版权归北京码字科技发展有限公司独家所有,未经授权,不得转载。
  • 本课程为虚拟产品,一经付费概不退款,敬请谅解。
  • 添加 GitChat 助教俏俏(微信 ID: gitchat2025),加入免费技术交流群。
× 订阅 Java 精选频道
¥ 元/月
订阅即可免费阅读所有精选内容