首页 > 其他分享 >第四单元读书笔记

第四单元读书笔记

时间:2022-10-16 22:11:36浏览次数:70  
标签:4.4 4.6 读书笔记 互斥 线程 Pthread 进程 第四 单元

第四章并发编程

介绍Pthread中的线程操作,包括线程管理函数,互斥量、连接、条件变量和屏障等线程同步工具。

  • 4.1并行计算导论

  • 4.1.1顺序算法与并序算法

使用cobegin-coend代码块来指定并行算法的独立任务。之将这些任务完成。

  • 4.1.2并行性与并发性
    并行算法只识别可并行执行的任务;只发生在多处理器或者多核系统中。并发执行可以

  • 4.2线程

  • 4.2.1线程原理
    进程模型中,进程是独立执行单元。所有进程都在内核模式或者用户模式下执行。线程是某进程同一地址空间上的独立执行单元。创建某个进程就是在唯一的地址空间创建一个主线程。

  • 4.2.2线程的优点
    (1)线程创建和切换速度更快。因为不需要获取新的资源和物理地址空间。
    (2)响应速度更快。一个线程被挂起,这个程序的其他线程还能在后台继续运算。
    (3)线程更是和并行运算。并行计算的目标是使用多个执行路径更快地解决问题。基于分治原则的算法经常表现出高度的并行性,通过使用并行或者并发执行来提高计算速度。这种算法有要求实体共享公用数据。不同进程需要在不同地址间进行数据交换;而线程共享同一地址空间中的所有数据。所以线程编写并运行的程序比使用进程编程更简单,更自然。

  • 4.2.3线程的缺点
    (1)由于地址空间共享,线程需要来自由用户的明确同步。
    (2)许多库函数可能对于线程不安全。
    (3)在单CPU系统上,在线程解决问题实际上要比使用顺序程序慢。

  • 4.3线程操作
    线程执行轨迹与进程类似。几乎所有操作系统都支持POSIX Pthread,定义了一系列标准应用程序编程接口(API)来支持线程编程

  • 4.4线程管理函数
    Pthread提供一下五个线程管理API

  • 4.4.1创建线程
    ptread_cread()

    成功返回0 。失败返回错误代码。
    参数

    Attr

    实现

  • 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中锁被称作互斥量。
    两种初始化互斥量的方法

    Attr参数

    示例4.3

  • 4.6.2死锁预防
    互斥量使用封锁协议。日过线程不能获取互斥量,就会发生阻塞,等待互斥量解锁后在继续。
    死锁一种状态,这种状态下,许多执行实体相互等待,一次都无法继续。
    执行条件加锁和退避来预防死锁。

  • 4.6.3条件变量
    锁,互斥量仅用于确保线程只能互斥地方临界区中的的共享数据对象。条件变量提供乐一中线程写作方法。条件变量总是与互斥量一起使用。互斥是所有同步机制的基础。在Pthread中使用**pthread_cond_t **来声明条件变量,必须初始化。

    使用方法:

  • 4.6.4生产者—消费者问题

 示例程序4.4



  • 4.6.5信号量
    进程同步的一般机制
    数据结构

    PV原语

    信号量函数

  • 4.6.6屏障
    线程连接操作允许某线程(通常是主程序)等待其他线程终止。在某些情况下,保持线程活动会更好,但应该要求它们在所有线程都达到指定同步点之前不能继续活动。在Pthread中,采用屏障机制
    创建屏障对象

  • 4.6.7用并发线程解线性方程组
    示例4.5



  • 4.6.8Linux中的线程
    Linux操作系统不区分进程和线程。对于linux内核,线程只是一个与其他进程共享某些资源的进程。
    进程和线程都用clone()系统调用创建

    宏定义

    资源存储

标签:4.4,4.6,读书笔记,互斥,线程,Pthread,进程,第四,单元
From: https://www.cnblogs.com/JIANGJININ/p/16797331.html

相关文章

  • 第四讲 继承与多态 课后总结
    什么是继承?继承是对现实生活中的“分类”概念的一种模拟。狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是“继承”关系的重要特性:通常简称为“IS_A”关......
  • 《Unix&Linux系统编程》第四章学习笔记
    目录第4章并发编程4.1并行计算导论1.顺序算法与并行算法2.并行性与并发性4.2线程1.线程的原理2.线程的优点3.线程的缺点4.3线程操作4.4线程管理函数1.创建线程2.线程I......
  • 云原生方案规划 第四阶段方案:云原生单元化技术 备份和恢复
    容器编排服务在云原生平台之上搭建备份和恢复组件用来对云原生应用进行备份和恢复。阿里云的容器编排服务的备份中心为无状态或有状态应用的备份、恢复与迁移提供了一站......
  • 【第四篇】Camunda系列-ProcessEngine核心对象
    一、ProcessEngine  ProcessEngine是Camunda流程引擎的核心。我们在流程中的很多具体的处理比如​​流程部署​​​、​​流程部署​​​、​​流程审批​​​等操作都是......
  • 《流畅的Python第二版》读书笔记——函数作为一等对象
    引言这是《流畅的Python第二版》抢先版的读书笔记。Python版本暂时用的是python3.10。为了使开发更简单、快捷,本文使用了JupyterLab。函数是Python的一等(first-class)对象......
  • 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节
    24.两两交换链表中的节点本题是一道模拟过程的题目。搞清楚两两交换的步骤之后,写出对应的代码也就不是难题了。不过在学习题解的过程中发现,两两交换的步骤也有很多种实现......
  • SDN第四次实验
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ub......
  • Java核心技术阅读笔记(第四章)
    Chapter4对象与类作者:Denis版本:1.0编写时间:2022/10/15编写地点:中国山西省4.1类与对象的概述可以把类想象为一个模具,利用类能够创造出很多同属于一个物种但参......
  • 20201306吴龙灿第四章学习笔记
    知识点归纳前言学习了解并发编程的概念,理解并行计算的概念和重要性;掌握线程的原理和其对于进程的优势。通过学习Pthread线程操作,了解如何使用线程进行并发编程;理解死锁问......
  • LINUX第四章——并发编程
    第四章Linux学习笔记并行计算顺序算法与并行计算并行性和并发性并行算法只识别可并行执行的任务。CPU系统中,并发性是通过多任务处理来实现的线程线程的原理某进程同......