学习笔记7

发布时间 2023-10-28 23:06:26作者: 20211116彭玮琪

第4章 并发编程

一、知识点归纳

并行计算导论

  1. 顺序算法与并行算法

    • begin-end
    • cobegin-end
  2. 并行性与并发性

线程

  1. 原理

  2. 优点

    • 线程创建和切换速度更快
    • 线程的响应速度更快
    • 线程更适合并行计算
  3. 缺点

    • 线程需要来自用户的明确同步
    • 许多库函数可能对线程不安全
    • 在单CPU系统上,使用线程解决问题实际上要比使用顺序程序更慢

线程操作

与进程类似。

线程管理函数

  1. 创建线程
    • int pthread_create (pthread_t *pthread_id, pthread_attr_t *attr, void (func)(void *), void *arg);
  2. 线程ID
    • int pthread_equal (pthread_t t1, pthread_t t2);
  3. 线程终止
    • int pthread_exit (void *status);
  4. 线程连接
    • int pthread_join (pthread_t thread, void **status_ptr);

线程示例程序

  1. 用线程计算矩阵的和
  2. 用线程快速排序

线程同步

  1. 互斥量
    • 允许执行实体仅在有锁的情况下才能继续执行
    • 初始化互斥量
      1. 静态方法
      2. 动态方法
    • 线程使用互斥量来保护共享数据对象。
    • 典型用法
  2. 死锁预防
    • 互斥量使用封锁协议
    • 死锁
    • 死锁预防
  3. 条件变量
    • 提供一种线性协作的方法
    • 初始化方法
      1. 静态方法
      2. 动态方法
  4. 生产者-消费者问题
    • 有限缓冲问题
  5. 信号量
    • 进程同步的一般机制
  6. 屏障
  7. 用并发线程解线性方程组
    • 高斯消元算法
      1. 行简化
        • 部分选主元法
      2. 回代
    • 高斯消元算法的并行化
  8. Linux中的线程
    • Linux不区分进程和线程,都由clone()系统调用创建

二、ChatGPT

image
image