210221阶段三线程、信号量、互斥锁
目录
- 一、学习的知识点
- 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;
互斥量
每次只允许一个线程去访问它
生产者消费者模型
生产者
- sem——wait();
//做蛋糕
pthread_mutex_lock();
g_count+1;
pthread_mutex_unlock(); - sem_post();
消费者
- sem_wait()
pthread_mutex_lock
g_count-1
pthread_mutex_unlock
二、上课没有听懂或者没有理解的地方
无
三、当天学习的收获
210221阶段三线程、信号量、互斥锁相关推荐
- 线程安全: 互斥锁和自旋锁(10种)
无并发,不编程.提到多线程就很难绕开锁?. iOS开发中较常见的两类锁: 1. 互斥锁: 同一时刻只能有一个线程获得互斥锁,其余线程处于挂起状态. 2. 自旋锁: 当某个线程获得自旋锁后,别的线程会一 ...
- linux线程(互斥锁、条件)
线程概念: 典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情.有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务. ...
- linux 信号量锁 内核,Linux内核信号量互斥锁应用
主要介绍了Linux 内核关于信号量,互斥锁等的应用 内核同步机制-信号量/互斥锁/读-写信号量 sema ,mutex ,rwsem 信号量 通用信号量 用户类进程之间使用信号量(semaphore ...
- 线程同步(互斥锁、条件、读写锁、信号量)
参考:(四十三)线程--线程同步(互斥锁.读写锁.条件变量.信号量) 作者:FadeFarAway 发布时间:2017-01-17 21:25:28 网址:https://blog.csdn.net/ ...
- java 信号量 互斥锁_线程同步(互斥锁与信号量的作用与区别)
"信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里).而互斥锁是用在多线程多任务互斥的,一 ...
- 210226阶段三 systemV信号量
目录 一.学习的知识点 服务器 前置服务器(接入服务器) 后置服务器(业务处理服务器) systemV信号量 二.上课没有听懂或者没有理解的地方 三.当天学习的收获 一.学习的知识点 线程属于POSI ...
- Go并发编程之美(三)、互斥锁
go并发编程目录 一.前言 go语言类似Java JUC包也提供了一些列用于多线程之间进行同步的措施,比如低级的同步措施有 锁.CAS.原子变量操作类.相比Java来说go提供了独特的基于通道的同步措 ...
- java线程:互斥锁与读写锁
2019独角兽企业重金招聘Python工程师标准>>> 两种互斥锁机制: 1.synchronized 2.ReentrantLock ReentrantLock是jdk5的新特性, ...
- 信号量 互斥锁 条件变量的区别
信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里).而互斥锁是用在多线程多任务互斥的,一个线程占用了某 ...
最新文章
- nodejs报错解决:Error: Can only perform operation while paused. - undefined
- IP地址审计在事件追溯中的应用
- 【攻防世界012】gametime
- oracle存储过程循环单列,Oracle存储过程循环语法实例分析
- 抖音很火的存钱计划,让python告诉你总共可以存到多少钱!
- Linux redhat目录下用户管理
- JDK 8 BigInteger精确缩小转换方法
- 【模板】在build中配置resources来防止我们资源导出失败的问题
- python画tan_Python入门之三角函数tan()函数实例详解
- tomcat-定制tomcat日志
- 快速搭建本地FTP服务器的方法
- MATLAB学习笔记(六)
- 2018年全国中高等院校教师“Python编程、应用及华为大数据” 、“网络空间安全”、“区块链”培训班...
- 十步完成windows服务的安装
- Yahoo!用户体验与设计前副总裁推荐——《设计模式》
- 车联网 北斗GPS 部标平台 JT/T808
- 冯乐乐之一 图形学基础 Shader入门精要
- android 网络邻居,魅族Flyme系统中怎么设置网络邻居?
- Nagios下载安装配置
- 初识云计算————云计算概念