第4章 并发编程
一、知识点归纳
并行计算导论
-
顺序算法与并行算法
- begin-end
- cobegin-end
-
并行性与并发性
线程
-
原理
-
优点
- 线程创建和切换速度更快
- 线程的响应速度更快
- 线程更适合并行计算
-
缺点
- 线程需要来自用户的明确同步
- 许多库函数可能对线程不安全
- 在单CPU系统上,使用线程解决问题实际上要比使用顺序程序更慢
线程操作
与进程类似。
线程管理函数
- 创建线程
- int pthread_create (pthread_t *pthread_id, pthread_attr_t *attr, void (func)(void *), void *arg);
- 线程ID
- int pthread_equal (pthread_t t1, pthread_t t2);
- 线程终止
- int pthread_exit (void *status);
- 线程连接
- int pthread_join (pthread_t thread, void **status_ptr);
线程示例程序
- 用线程计算矩阵的和
- 用线程快速排序
线程同步
- 互斥量
- 允许执行实体仅在有锁的情况下才能继续执行
- 初始化互斥量
- 静态方法
- 动态方法
- 线程使用互斥量来保护共享数据对象。
- 典型用法
- 死锁预防
- 互斥量使用封锁协议
- 死锁
- 死锁预防
- 条件变量
- 提供一种线性协作的方法
- 初始化方法
- 静态方法
- 动态方法
- 生产者-消费者问题
- 有限缓冲问题
- 信号量
- 进程同步的一般机制
- 屏障
- 用并发线程解线性方程组
- 高斯消元算法
- 行简化
- 部分选主元法
- 回代
- 行简化
- 高斯消元算法的并行化
- 高斯消元算法
- Linux中的线程
- Linux不区分进程和线程,都由clone()系统调用创建
二、ChatGPT