首页 > 其他分享 >学习笔记7

学习笔记7

时间:2023-10-28 23:12:44浏览次数:35  
标签:int void 笔记 学习 互斥 死锁 线程 pthread

第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

标签:int,void,笔记,学习,互斥,死锁,线程,pthread
From: https://www.cnblogs.com/Vicky-Peng/p/17794863.html

相关文章

  • React学习一:环境搭建、JSX基础、事件绑定、组件使用、样式控制
    一、概念React由Meta公司研发,是一个用于构建Web和原生交互界面的库。react中文文档地址:https://zh-hans.react.dev/learnReact的优势相较传统基于DOM开发的优势:组件化的开发方式;不错的性能相较于其他前端框架的优势:丰富的生态;跨平台支持二、环境搭建首先和vue项目一样,项目......
  • 运用递归学习新知识——插入排序
    还是老样子,先讲一下插入排序的一个概念,比如校合唱团要按身高排队,从左到右由矮到高,小糖同学左边的同学已经按照身高站好了,右边还很乱,于是团长小蓝姐姐想了一个办法,她叫小糖同学往左看,小糖同学左边第一位叫男低1号,左边第二位叫男低2号,右边第一位叫男高1号,右边第二位叫男高2号,以此类......
  • 第八周学习记录
    第四章文件权限4.2基本权限4.2.1ACL的基本用法getfacl命令查看ACL权限,如下图所示: setfacl命令可以设置ACL权限,对每一个文件或目录进行更精确的权限设置,添加“-m”参数可以修改当前文件ACL权限,如下图所示:为用户tom,增加“rwx”权限,使用getfacl命令查看,如下图所示: ......
  • 学习笔记7+代码
    一、苏格拉底挑战二、遇见的问题三、实践和代码代码:#include<stdio.h>#include<pthread.h>//线程函数,接受一个void*参数,返回一个void*指针void*thread_function(void*arg){intthread_arg=*((int*)arg);printf("Threadreceivedargument......
  • Python第二章读书笔记-2023.10.28
    03运行超市抹零结账行为money_all=67.99+11.75+21.1+8.49+25.89+17.5+22.4money_all_str=str(money_all)print("商品总金额为:",money_all_str)money_real=int(money_all)money_real_str=str(money_real)print("实收金额为:",money_real_str)print("学号后四位3126"......
  • 【学习笔记】卡特兰数
    卡特兰数定义:卡特兰数的计算公式涉及组合计数,它是很多组合问题的数学模型,是一个很常见的数列。\(\bf{\underline{卡特兰数(Catalan)}}\)是一个数列,它的一种定义是:\[C_n=\frac{1}{n+1}\binom{2n}{n},n=0,1,2,...\]卡特兰数有三个计算公式:公式1:\[C_n=\frac{1}{n+1}\binom{2n}......
  • 学习笔记7
    第四章并发编程这一章主要介绍了并发编程的相关内容,包括并行计算、顺序算法与并行算法以及并行性和并发性;解释了线程的原理机器相对于进程的优势,同时还进行了线程管理、并发编程的实际操作,让我们更加深刻地了解多任务处理、线程同步和并发编程的原理及方法。并行计算基于分治......
  • 第九周Linux学习笔记
    本周的学习内容属实有点多(差点跟不上,浅浅吐槽一下),学习了第五章进程管理以及第六章I/O重定向。具体命令及其作用在下面一一列举。第五章:进程管理进程小tips:每个进程都有唯一的进程表示PID;进程有就绪态、阻塞态和运行态三个状态;进程有的是密集型有的是疏散型。1、“psaux”命令,......
  • 关于学习Mybatis-plus的认识
    1.实体类的类名和属性尽量一致,如果不一致需要用注解进行指定。2.mybatis-plus是把实体类的类名直接转换成小写到数据库查找,所以需要@TableName(value="表名")来指定表的名字进行查询@TableName("sys_user")publicclassUser{privateLongid;privateStringn......
  • 现代企业管理的部分复习笔记
    因为不是专业课学的比较随意,大概会分成四个部分,三个内容一个部分题,最近就要考试了,共勉格式问题显示不好  用word写的,链接如下我用夸克网盘分享了「现代企业管理.docx」,点击链接即可保存。打开「夸克APP」在线查看,支持多种文档格式转换。链接:https://pan.quark.cn/s/aacef986......