栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

操作系统④-⑤:多线程同步、互斥、同步、如何实现:锁和信号量(PV操作)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

操作系统④-⑤:多线程同步、互斥、同步、如何实现:锁和信号量(PV操作)

多线程同步

线程之间有共享进程的资源,⽐如代码段、堆空间、数据段、打开的⽂件等资源,但每个线程都有⾃⼰独⽴的栈空间。

1 互斥

互斥(mutualexclusion):保证⼀个线程在临界区执⾏时,其他线程应该被阻⽌进⼊临界区。
解决了并发进程/线程对临界区的使⽤问题。

多进程竞争公共资源的时候,也可以使⽤互斥的⽅式来避免资源竞争造成的资源混乱。

2 同步

所谓同步,就是并发进程/线程在⼀些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通信息称为进程/线程同步。


3 互斥与同步的实现和使用——锁和信号量 3.1 锁


锁:加锁、解锁操作;

  1. 忙等待锁,也被称为⾃旋锁(spin lock):最简单的⼀种锁,⼀直⾃旋,利⽤ CPU 周期,直到锁可⽤。
  2. 无忙等待锁:当没获取到锁的时候,就把当前线程放⼊到锁的等待队列,然后执⾏调度程序,把 CPU让给其他线程执⾏。
3.2 信号量

信号量: PV操作


PV操作如何使用

  1. 使⽤信号量实现临界区的互斥访问。

  1. 信号量实现事件同步

同步的⽅式是设置⼀个信号量,其初值为 0。
P执行0 -》-1,V执行 -1 -》 0。

生产者,消费者问题

4 经典同步问题——哲学家就餐、读者/写者问题

“哲学家进餐问题”对于互斥访问有限的竞争问题(如 I/O 设备)⼀类的建模过程⼗分有⽤。

不做限制,当5个人同时拿左手的叉子会出现死锁。
方案一:分奇偶使用不同拿叉子方案。
方案二:用数组记录每个人的状态。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631458.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号