你好,我是丁威。
这节课,我们重点介绍并发编程中的基石:锁。
锁的基本存储结构
我们先通过一个简单的场景来感受一下锁的使用场景。一家三口在一起生活,家里只有一个卫生间,大家早上起床之后都要去厕所。这时候,一个人在卫生间,其他人就必须排队等待。
这个场景用 IT 术语可以表述为下面两点。
洗手间作为一个资源在同一时间只能被一个人使用,它具备排他性。
一个人用完洗手间(资源)之后会归还锁,然后排队者重新开始竞争洗手间的使用权。
我们可以对这个场景进行建模。
资源:更准确地说是公共资源或共享资源需要被不同的操作者使用,但它不能同时被使用。
资源使用者:共享资源的使用者。
锁:用来保护资源的访问权。锁对象的归属权为共享资源,但当资源使用者向资源申请操作时,可以将锁授予资源使用者。这时候,资源使用者叫做锁的占有者,在此期间它有权操作资源。操作者不再需要操作资源之后,主动将锁归还。
排队队列:我们可以更专业地称之为阻塞队列,它可以存储需要访问资源但还没获取锁的资源使用者,其归属权通常为锁对象。
这里我之所以强调归属权,主要是因为它可以帮助我们理解锁的基本结构和资源的关系。
那锁的结构是什么呢?我们通过上节课的课后题来理解这个问题。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
0/2000
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
开篇词|为什么中间件对分布式架构体系来说这么重要?
免费
02|中间件生态(下):同类型的中间件如何进行选型?
05 | 多线程:多线程编程有哪些常见的设计模式?
06 | 锁:如何理解锁的同步阻塞队列与条件队列?
开通超级会员免费畅看本课程
该文章仅可免费阅读部分内容,如需阅读完整文章,请开通超级会员或单独购买本课程。