原文:互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

如何用好锁,是程序员的基本素养之一。 高并发的场景下,如果选对了合适的锁,则会大大提高系统的性能,否则性能会降低。 所以,知道各种锁的开销,以及应用场景是很有必要的。 接下来,就谈一谈常见的这几种锁: 正文 多线程访问共享资源的时候,避免不了资源竞争而导致数据错乱的问题,所以我们通常为了解决这一问题,都会在访问共享资源之前加锁。 最常用的就是互斥锁,当然还有很多种不同的锁,比如自旋锁 读写锁 乐观 ...

2021-09-29 23:31 0 129 推荐指数:

查看详情

面试官:你说说互斥自旋读写锁悲观乐观应用场景

前言 生活中用到的,用途都比较简单粗暴,上锁基本是为了防止外人进来、电动车被偷等等。 但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃·格瓦拉」面前,就是形同虚设,只要他愿意,他就可以轻轻松松地把你电动车给「顺走」,不然打工怎么会是他这辈子不可能的事情 ...

Wed Sep 16 04:15:00 CST 2020 4 5901
悲观乐观的区别和应用场景

1.早上提醒项目提前上线下午两点至三点 2.导出两张模板,生产环境需要导出CSR一张表方便以后查看 3.这问题让我联系很多情景下应用,分布式、JAVA中线程同步、mysql死锁检测机制、缓存等,在关系型数据库里又有行,表,读锁,写锁,这个问题我觉得理解它是多向 ...

Thu Mar 22 07:13:00 CST 2018 0 2269
《面试经典系列》- 乐观悲观及其应用场景

1、乐观   乐观(Optimistic Locking)是一种思想,相对悲观而言,乐观认为对同一个数据的并发操作,不会造成冲突,所以在数据提交更新的时候,才会正式对数据进行冲突校验,如果有冲突,则给用户返回错误的信息,让用户决定如何处理。乐观地认为,不加锁的并发操作是没有问题 ...

Fri Mar 13 19:40:00 CST 2020 0 895
互斥、递归读写锁自旋区别

互斥 共享资源的使用是互斥的,即一个线程获得资源的使用权后就会将改资源加锁,使用完后会将其解锁,所以在使用过程中有其它线程想要获取该资源的,那么它就会被阻塞陷入睡眠状态,直到该资源被解锁才会别唤醒,如果被阻塞的资源不止一个,那么它们都会被唤醒,但是获得资源使用权的是第一个被唤醒的线程 ...

Tue Aug 06 23:19:00 CST 2019 0 1387
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM