liveness 生存性/活性
翻译了两篇,这篇就不翻译了,自己写吧。
对于线程来说除了安全性,我们还应该重视它的生存性(我认为翻译成三个字说着比較顺)。 为了保证线程安全,我们往往须要用到同步,可是同步限制了线程的运行,线程必须为了获得共享资源而等待。等待的时间可长可短,这就体现了线程的活跃程度,假设线程仅仅是安全的运行了,而运行的非常慢,那并发也就显得不是非常必要了。所以除了保证线程的安全以外我们还必须保证线程的活跃。
同步带来了堵塞的问题,堵塞就得等待,前面提到等待的时间可长可短,最坏的情况下还可能:
死锁(deadlock)
所谓死锁就是一组线程被互相堵塞,在互相等待对方释放资源,经典的就是哲学家就餐问题,每一个哲学家都吃不到饭。
死锁发生的条件有:
1) 具有多个共享资源(被共享的对象)
2) 同一个线程锁定一个资源后,在没有解锁前想要尝试锁定另外一个资源
3) 获得共享资源的顺序不固定,资源之间没有优先级
避免以上三个条件中的不论什么一个都能够避免死锁。
也有可能发生饥饿(starvation)和活锁(livelock)
饥饿指线程一直在等待自己想要的资源而得不到,被block非常长的时间。造成这样的情况的原因可能是其它线程一直在使用这个资源,永远轮不到这个可怜的线程。狼群就餐有等级制度,如果捕获的食物不够,每次吃饭的时候那个等级最低的狼都吃不到东西,那这个可怜的狼就仅仅有饿死了。(也许实际情况不是这样,取个样例,比較好记)
活锁,这样的情况下没有堵塞,线程都是活跃的,都在运行,可是都在原地踏步,最好的样例就是两个人过过道的样例。A和B分别从过道的两头走过来,A给B让路的时候B也就A让路,如此重复,两方都在一直让路。线程没有人那么聪明,所以他们可能会一直让下去,于是就发生了活锁这样的事情。
liveness 生存性/活性相关推荐
- 浅析Kubernetes Pod重启策略和健康检查
使用Kubernetes的主要好处之一是它具有管理和维护集群中容器的能力,几乎可以提供服务零停机时间的保障.在创建一个Pod资源后,Kubernetes会为它选择worker节点,然后将其调度到节点上 ...
- spring boot 2.5.5 reference chapter 5 生词
5 Upgrading Spring Boot check the "migration guide" on the project wiki that provides deta ...
- From blockchain consensus back to Byzantine consensus
文章目录 1. Pow model 2. 一般化的共识问题--拜占庭共识 3. 区块链共识算法 3.1 有向无环图(DAG: Directed acyclic graph) 3.2 分叉(Forks) ...
- Effective-Java 谨慎使用流并行
48. 谨慎使用流并行 在主流语言中,Java 一直处于提供简化并发编程任务的工具的最前沿. 当 Java 于 1996 年发布时,它内置了对线程的支持,包括同步和 wait / notify 机制. ...
- 【系统分析与验证笔记】线性时间(Linear-Time,简称LT)
线性时间行为(Linear-Time Behavior) 路径和状态图 TSTSTS的状态图记作G(TS)G(TS)G(TS),是顶点V=SV = SV=S和边E={(s,s′∈S×S∣s′∈Post ...
- VOGUE: Secure User Voice Authentication on Wearable Devices using Gyroscope
VOGUE: Secure User Voice Authentication on Wearable Devices using Gyroscope VOGUE:使用陀螺仪在可穿戴设备上进行安全用户 ...
- kubernates 实践
k8s 是 google 开源的一款 容器管理应用 是 docker swarm 的延续, 借鉴了一些 docker swarm 的命令方式, k8s 社区更强大,发展更好,环境特别难搭建 docke ...
- 分布式系统(数据复制与一致性)
文章目录 Replication CAP Conjecture Data-centric Consistency Models Sequential Consistency Causal Consis ...
- K8s Liveness/Readiness/Startup 探针机制
官方参考文档 目录 前言 一.默认健康检测 1.1 restartPolicy 1.2 测试案例 二.Liveness 三.Readiness 四.Startup 前言 玩过 Docker Swarm ...
最新文章
- 中小学AI教育靠谱吗?50%教师教学经验不足1年
- R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、在双因素方差分析中,受试者被分配到由两个因素交叉分类形成的组(Two-way factorial ANOVA)
- Bech32编码 (1)产生背景
- Format函数用法
- 『数据库』数据库系统效率Max--数据库并发控制
- 清华大学 张春良 计算机系,南京张春良老师小学生信息学辅导
- PHP 从结果集中取得一行作为关联数组:
- 2019聊大考研计算机调剂,2019年聊城大学硕士研究生预调剂工作说明
- iNFTnews | 周杰伦18年前未发布的作品Demo,藏在了区块链技术里
- BZOJ 3991 set维护dfs序
- 算高差改正数的计算机程序,水准测量中测量高差的改正数怎么计算?
- java实现psd格式图片读入
- 阿里巴巴校招笔试题整理
- Excel 2016图表标题不能输入中文,图表一直闪动
- fw300r虚拟服务器设置,迅捷(Fast)FW300RM路由器怎么设置 | 192路由网
- linux egg,Ubuntu下egg文件的安装与制作
- 请问如何判断一段文本中是否含有词典中的词语,并且把它们统计出来呀,有无大神赐教呀!!!
- wallproxy on ubuntu usage
- 怎么从pdf中提取图片?高清大图提取
- 双向可控硅 2N6073B
热门文章
- Python pow() 函数
- 前端开发常用免费资源,显著提升工作效率
- idea jsp页面没有html提示,解决IDEAJSP没有代码提示问题的几种方法.pdf
- mysql创建用户unix,MySQL,无法创建UNIX套接字(12)
- php简单的登录界面,PHP实现简单用户登录界面
- python测试脚本 进制转换器_使用Python内置的模块与函数进行不同进制的数的转换...
- linux socket 结构定义 send,Linux下Socket编程中用send发送结构体
- 计算机硬盘中没有什么 a文件夹,为什么硬盘上没有A和B盘?
- 【1024开发者节】:2019科大讯飞声博会会议记录——AI+女性,AI+5G
- Page Cache引起的业务问题处理