- 畅销套餐
- 精选套餐
- 人气套餐
- 尊享套餐
- 高薪套餐
- 课程介绍
- 课程大纲
适合人群:
具有计算机背景, 希望利用多核 CPU 进行并发编程的程序员与科研人员.
你将会学到:
对并发编程有初步的理解
- 理解 C11 标准
- 理解什么是并发编程
- 如何编写可移植的并发程序
- 掌握线程的创建, 卸载, 强制完成
- 理解互斥的使用
- 理解条件变量
- 原子操作
课程简介:
多线程技术,使得在一个程序内部能拥有多个线程并行执行。一个线程的执行可以被认为是一个 CPU 核心在执行该程序。当一个程序运行在多线程下,就好像有多个 CPU 在同时执行该程序。
多线程比多任务更加有挑战。多线程是在同一个程序内部并行执行,因此会对相同的内存空间进行并发读写操作。这可能是在单线程程序中从来不会遇到的问题。其中的一些错误也未必会在单 CPU 机器上出现,因为两个线程从来不会得到真正的并行执行。然而,更现代的计算机伴随着多核CPU的出现,也就意味着不同的线程能被不同的 CPU 核得到真正意义的并行执行。
如果一个线程在读一个内存时,另一个线程正向该内存进行写操作,那进行读操作的那个线程将获得什么结果呢?是写操作之前旧的值?还是写操作成功之后的新值?或是一半新一半旧的值?或者,如果是两个线程同时写同一个内存,在操作完成后将会是什么结果呢?是第一个线程写入的值?还是第二个线程写入的值?还是两个线程写入的一个混合值?因此如没有合适的预防措施,任何结果都是可能的。而且这种行为的发生甚至不能预测,所以结果也是不确定性的。
本课程将介绍 1) 如何创建与管理线程; 2) 内存顺序, 对 CPU 的执行顺序进行限制, 保持程序的正确性; 3) 原子操作, 使得原子变量在某个时刻只被一个线程访问; 4) 互斥, 对共享资源进行保护, 在某个时刻只能一个线程访问; 5) 条件变量, 如何实现多个线程的协作.
C11 是 C 语言的新标准, 它提供了新的内容, 包括线程管理, 原子操作, 互斥 (mutex), 条件变量. 该标准使得我们可以编写可移植的多线程程序.
在 Linux 下, 需要比较新的 GCC, 并且需要打开 C11 支持, -std=c11, 或者使用更新的标准, 例如 -std=c17.
课程大纲-C语言多线程并发编程
第1章什么是多线程(7分钟1节)
第2章多线程管理(44分钟14节)
第3章单次调用(5分钟2节)
第4章内存顺序(24分钟6节)
“小城二虎”老师的其他课程更多+