共享锁(S锁):又称读锁,若事务T对数据对象A加上S锁,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。排他锁(X锁):又称写锁。若事务T对数据对象A加上X锁,其他事务不能再对A加任何锁,直到T释放A上的锁。 总结:共享锁,可以再加共享锁。排他锁,不能加任何锁 某一场地故障时,可使用其 ...
分类:
数据库 时间:
2019-11-29 11:01:09
阅读次数:
92
一、相关名词 表级锁(锁定整个表) 页级锁(锁定一页) 行级锁(锁定一行) 共享锁(S锁,MyISAM 叫做读锁) 排他锁(X锁,MyISAM 叫做写锁) 悲观锁(抽象性,不真实存在这个锁) 乐观锁(抽象性,不真实存在这个锁) 二、InnoDB与MyISAM Mysql 在5.5之前默认使用 MyI ...
分类:
数据库 时间:
2019-11-26 21:13:44
阅读次数:
415
1,为啥需要自旋锁 很多时候我们并不能采用其他的锁,比如读写锁、互斥锁、信号量等。一方面这些锁会发生上下文切换,他的时间是不可预期的,对于一些简单的、极短的临界区完全是一种性能损耗;另一方面在中断上下文是不允许睡眠的,除了自旋锁以外的其他任何形式的锁都有可能导致睡眠或者进程切换,这是违背了中断的设计 ...
分类:
其他好文 时间:
2019-11-26 13:29:23
阅读次数:
72
reference: 原子操作、内存屏障、锁 :https://www.jianshu.com/p/1d90fe6627ad 哪些操作本身是原子的? 单核处理器下中断发生在指令之间,因此单指令操作都是原子的 多核处理器下进行零次或一次对齐内存访问的汇编指令是原子的 c++版读写锁 https://b ...
分类:
其他好文 时间:
2019-11-23 18:10:30
阅读次数:
75
为了提高性能,Java提供了读写锁,读写锁分为读锁和写锁。多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥,这是由JVM控制的。如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。 读锁 如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁。 写锁 如果你的代码修改数据, ...
分类:
其他好文 时间:
2019-11-22 13:57:53
阅读次数:
65
浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景 Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景 一、相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) | ...
分类:
数据库 时间:
2019-11-22 10:33:09
阅读次数:
100
根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。 一、全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其 ...
分类:
其他好文 时间:
2019-11-19 15:41:10
阅读次数:
68
包含的元素:gate,user,and client,其中客户端可以去创建门和人,门是需要给人共享的数据 门 问题:以上的功能,在多线程的情况下,姓名和地址不回应,这是因为多个线程去同时访问同一资源gate而造成的 解决方法: 读写锁分离 ...
分类:
编程语言 时间:
2019-11-17 15:07:49
阅读次数:
81
本文主要讲解go语言web编程中自定义路由器的设计。在此之前需要先了解一下go语言web编程中路由与http服务的基本原理,可以参考笔者另一篇博文:go web编程——路由与http服务 。 我们已经知道,go的默认路由器只支持路由绝对匹配,无法支持正则匹配,这样就没办法设计一些简洁、优雅的路由。那 ...
分类:
Web程序 时间:
2019-11-14 17:59:06
阅读次数:
89
本文基于 "https://github.com/h2pl/Java Tutorial" 的总结 ReentrantReadWriteLock(读写锁)源码分析 "BlockingQueu 阻塞队列" ArrayBlockingQueue(数组。有界) LinkedBlockingQueue(链表。 ...
分类:
编程语言 时间:
2019-11-10 14:00:04
阅读次数:
89