zoukankan      html  css  js  c++  java
  • 学习笔记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不区分进程和线程
  • 相关阅读:
    《算法竞赛进阶指南》0x07贪心 POJ2054 color the tree树的缩点与合并
    《算法竞赛进阶指南》0x07 贪心 NOIP2012 vector模拟高精度计算
    《算法竞赛进阶指南》0x07贪心 POJ1328
    《算法竞赛进阶指南》0x07贪心 POJ3190
    《算法竞赛进阶指南》0x07贪心 POJ3614
    《算法竞赛进阶指南》0x06倍增 Acwing GeniusACM
    8.装饰模式(Decorator Pattern)
    7.桥接模式(Bridge Pattern)
    6.适配器模式(Adapter Pattern)
    5.原型模式(Prototype)
  • 原文地址:https://www.cnblogs.com/Ye-fen/p/15468358.html
Copyright © 2011-2022 走看看