目录

  • 一、学习的知识点
    • CPU时间片轮转
    • 进程切换开销大吗
    • 线程函数库
      • pthread_create函数
    • 线程同步
      • 信号量
        • sem_init函数
        • sem_wait函数
        • sem_post函数
      • 互斥量
      • 生产者消费者模型
        • 生产者
        • 消费者
  • 二、上课没有听懂或者没有理解的地方
  • 三、当天学习的收获

一、学习的知识点

PCB结构体包含进程所有信息 有PID 时间片等等
时间片是CPU分配给进程运行的单位时间。

CPU时间片轮转

进程切换开销大吗

进程切换需要保存进程运行信息,进程数量越多,开销越大

线程函数库

头文件 <pthread.h> 编译带线程函数库的程序时要加 -lpthread

pthread_create函数

  • 功能:创建一个新的线程
  • 原型:int pthread_create(pthread_t *thread,
    pthread_attr_t attr,
    void
    (start_routine)(void),
    void *arg);
  • 参数:
    • thread:新线程创建成功后,保存新线程的标识符
    • attr:设置线程的属性,直接传NULL即可
    • start_routine: 是个函数地址,线程启动后要执行的函数
    • arg:传给线程启动函数的参数
  • 调用成功时返回值是“0”,如果失败则返回一个错误。

线程同步

信号量

头文件 <semaphore.h>
信号量对象用sem_t表示

sem_init函数

  • 功能:创建一个信号量
  • 原型:int sem_init(sem_t *sem,int pshared,unsigned value);
  • 参数:
    • sem: 要进行初始化的信号量对象
    • pshared:控制着信号量的类型,如果值为0,表示它是当前进程的局部信号量;否则,其他进程就能够共享这个信号量
    • value:赋给信号量对象的一个整数类型的初始值
  • 调用成功时 返回 0;

sem_wait函数

  • 功能:从信号量的值减去一个“1”,但它永远会先等待该信号量为一个非零值才开始做减法
  • 原型:int sem_wait(sem_t *sem);
  • 参数:
    • sem: 初始化的信号量对象的指针作为参数,用来改变该对象的值
  • 调用成功时 返回 0;

sem_post函数

  • 功能:给信号量的值加上一个“1”
  • 原型:int sem_post(sem_t *sem);
  • 参数:
    • sem: 初始化的信号量对象的指针作为参数,用来改变该对象的值
  • 调用成功时 返回 0;

互斥量

每次只允许一个线程去访问它

生产者消费者模型

生产者

  1. sem——wait();
    //做蛋糕
    pthread_mutex_lock();
    g_count+1;
    pthread_mutex_unlock();
  2. sem_post();

消费者

  1. sem_wait()
    pthread_mutex_lock
    g_count-1
    pthread_mutex_unlock

二、上课没有听懂或者没有理解的地方

三、当天学习的收获

210221阶段三线程、信号量、互斥锁相关推荐

  1. 线程安全: 互斥锁和自旋锁(10种)

    无并发,不编程.提到多线程就很难绕开锁?. iOS开发中较常见的两类锁: 1. 互斥锁: 同一时刻只能有一个线程获得互斥锁,其余线程处于挂起状态. 2. 自旋锁: 当某个线程获得自旋锁后,别的线程会一 ...

  2. linux线程(互斥锁、条件)

    线程概念: 典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情.有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务. ...

  3. linux 信号量锁 内核,Linux内核信号量互斥锁应用

    主要介绍了Linux 内核关于信号量,互斥锁等的应用 内核同步机制-信号量/互斥锁/读-写信号量 sema ,mutex ,rwsem 信号量 通用信号量 用户类进程之间使用信号量(semaphore ...

  4. 线程同步(互斥锁、条件、读写锁、信号量)

    参考:(四十三)线程--线程同步(互斥锁.读写锁.条件变量.信号量) 作者:FadeFarAway 发布时间:2017-01-17 21:25:28 网址:https://blog.csdn.net/ ...

  5. java 信号量 互斥锁_线程同步(互斥锁与信号量的作用与区别)

    "信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里).而互斥锁是用在多线程多任务互斥的,一 ...

  6. 210226阶段三 systemV信号量

    目录 一.学习的知识点 服务器 前置服务器(接入服务器) 后置服务器(业务处理服务器) systemV信号量 二.上课没有听懂或者没有理解的地方 三.当天学习的收获 一.学习的知识点 线程属于POSI ...

  7. Go并发编程之美(三)、互斥锁

    go并发编程目录 一.前言 go语言类似Java JUC包也提供了一些列用于多线程之间进行同步的措施,比如低级的同步措施有 锁.CAS.原子变量操作类.相比Java来说go提供了独特的基于通道的同步措 ...

  8. java线程:互斥锁与读写锁

    2019独角兽企业重金招聘Python工程师标准>>> 两种互斥锁机制: 1.synchronized 2.ReentrantLock ReentrantLock是jdk5的新特性, ...

  9. 信号量 互斥锁 条件变量的区别

    信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里).而互斥锁是用在多线程多任务互斥的,一个线程占用了某 ...

最新文章

  1. nodejs报错解决:Error: Can only perform operation while paused. - undefined
  2. IP地址审计在事件追溯中的应用
  3. 【攻防世界012】gametime
  4. oracle存储过程循环单列,Oracle存储过程循环语法实例分析
  5. 抖音很火的存钱计划,让python告诉你总共可以存到多少钱!
  6. Linux redhat目录下用户管理
  7. JDK 8 BigInteger精确缩小转换方法
  8. 【模板】在build中配置resources来防止我们资源导出失败的问题
  9. python画tan_Python入门之三角函数tan()函数实例详解
  10. tomcat-定制tomcat日志
  11. 快速搭建本地FTP服务器的方法
  12. MATLAB学习笔记(六)
  13. 2018年全国中高等院校教师“Python编程、应用及华为大数据” 、“网络空间安全”、“区块链”培训班...
  14. 十步完成windows服务的安装
  15. Yahoo!用户体验与设计前副总裁推荐——《设计模式》
  16. 车联网 北斗GPS 部标平台 JT/T808
  17. 冯乐乐之一 图形学基础 Shader入门精要
  18. android 网络邻居,魅族Flyme系统中怎么设置网络邻居?
  19. Nagios下载安装配置
  20. 初识云计算————云计算概念

热门文章

  1. 撩课-Web大前端每天5道面试题-Day24
  2. re:Invent 大会第一天,看看AWS有哪些最新进展?\n
  3. Git手册 - 分支远程同步
  4. CCNP学习笔记2-路由部分--EIGRP
  5. Oracle的奇葩设置之非归档模式与RMAN备份
  6. SQL SERVER读书笔记:nolock
  7. vlc学习计划(5)--VLC程序宏及线程分析
  8. 解决AJAX表单用POST方式提交Checkbox复选框的问题
  9. 零基础如何学好数据分析?
  10. 谈谈Spring中都用到了那些设计模式