学习笔记7

第四章 并发进程
    4.1 并行计算导论
        并行计算是一种计算方案,它尝试使用多个执行算法的处理器更快速地解决问题
        计算的未来发展方向是并行计算
   并行算法原理如图:
   
        4.1.1 顺序算法与并行算法
            在描述顺序算法时,常用的方法是用一个begin-end代码块列出算法
            顺序算法包含多个步骤,所有步骤通过单个任务依次执行,每次执行一个步骤
            并行算法的描述,使用cobegin-coend代码块来指定
            在cobegin-coend块中,所有任务都是并行执行的
   
        4.1.2 并行性与并发性
      
            理想情况下,并行算法中的所有任务都应该同时实时执行
            真正的并行执行只能在有多个处理组件的系统中实现
    4.2 线程
  实现线程主要有三种方式:
            (1)使用内核线程实现
            (2)使用用户线程实现
            (3)使用用户线程加轻量级进程混合实现
        4.2.1 线程的原理
  
        4.2.2 线程的优点
            (1)线程创建和切换速度更快
            (2)线程的响应速度更快
            (3)线程更适合并行计算
        4.2.3 线程的缺点
            (1)由于地址空间共享,线程需要来自用户的明确同步
            (2)许多库函数可能对线程不安全
            (3)单CPU系统上,线程解决问题比顺序程序慢
  总结:这里我们总结了线程的优缺点,顺带找到了进程的优缺点
  

   

    4.3 线程操作
    4.4 线程管理函数
        4.4.1 创建线程
            使用pthread_create()函数创建线程
   
        4.4.2 线程ID
            线程ID是一种不透明的数据类型,取决于实现情况
        4.4.3 线程终止
            线程函数结束后,线程即终止
        4.4.4 线程连接
            一个线程可以等待另一个线程的终止
    4.5 线程示例程序
        4.5.1 用线程计算矩阵的和
        4.5.2 用线程快速排序
    4.6 线程同步
        4.6.1 互斥量
    
      最简单的同步工具是锁,在Pthread中,锁被称为互斥量,意思是相互排斥。
     两种方法可以初始化互斥量:
       (1)静态方法:定义互斥量m,并使用默认属性对其初始化
       (2)动态方法:使用pthread_mutex_init()函数,可通过attr参数设置互斥属性
       4.6.2 死锁预防
     死锁是一种状态,在这种状态下,许多执行实体相互等待,因此都无法继续下去
       4.6.3 条件变量
     条件变量提供一种线程协作的方法
      条件变量总是与互斥量一起使用
      条件变量也可以通过两种方法进行执行化
       (1)静态方法:定义条件变量con,并使用默认属性对其初始化
       (2)动态方法:使用pthread_mutex_init()函数,可通过attr参数设置条件变量
       4.6.4 生产者-消费者问题
    生产者-消费者问题,也称有限缓冲问题
       4.6.5 信号量
    信号量是进程同步的一般机制。信号量是一种数据结构
    
       4.6.6 屏障
       4.6.7 用并发线程解线性方程组
       4.6.8 Linux中的线程
    与许多其他操作系统不同,Linux不区分进程和线程
posted @ 2021-10-26 23:25  冯睿20191328  阅读(49)  评论(0编辑  收藏  举报