信安系统学习笔记七
第四章 并发编程
一、知识点归纳
并行计算导论
并行计算是一种计算方法,通过使用多个执行并行算法的处理器相较串行计算更快地解决问题。
顺序算法与并行算法
并行性与并发性
线程
线程的原理
线程的优点
线程创建和切换速度更快
线程的响应速度更快线程更适合并行计算
线程的缺点
由于地址空间共享,线程需要来自用户的明确同步。
许多库函数可能对线程不安全。
在单CPU系统上,使用线程解决问题实际上要比使用顺序程序慢,这是由在运行时创建线程和切换上下文系统开销造成的
线程操作
线程管理函数
线程示例程序
线程同步
竞态条件:当多个线程试图修改同一共享变量或数据结构时,修改结果取决于线程的执行顺序。
死锁预防
- 简单的死锁预防是对互斥量进行排序,并确保每个线程只在一个方向请求互斥量,这样请求序列中就不会有循环。有多种方法可以解决死锁问题:死锁预防、死锁规避、死锁检测和恢复等。
条件变量
- 条件变量提供线程协作的方法。同样需要初始化,且方法同互斥量相同。
信号量
- 信号量是进程同步的一般机制。(计数)信号量是一种数据结构
屏障
- 线程连接操作允许某线程(通常是主线程)等待其他线程终止,在Pthread中,可以采用的机制是屏障以及一系列屏障函数。
Linux中的线程
- Linux不区分进程和线程。对于Linux内核,线程只是一个与其他进程共享某些资源的进程。
实践内容与截图
用线程计算矩阵的和