AbstractQueuedSynchronizer是并发编程包中最重要的类,是并发编程包的实现基层。简单来说,AbstractQueuedSynchronizer提供了一个基于FIFO的队列,用于存...
分类:
其他好文 时间:
2017-04-21 10:07:52
阅读次数:
315
shell命令flock通过加锁方式实现互斥访问。 常用语多进程间互斥访问。 flock用flock(2)系统调用实现。 用法 参数 -s: 获取共享锁,有时被称为只读锁。 -x,-e:获取互斥锁,有时称为写锁。默认。 -u:释放锁。这个不是必须的,当文件关闭时(进程结束后,进程文件都被关闭)锁被自 ...
分类:
其他好文 时间:
2017-04-19 00:28:32
阅读次数:
220
共享锁(shared lock) 和 排它锁(exclusive lock) 也可以叫读锁(read lock)和写锁(write lock) 读锁是共享的 互相不阻塞的 写锁是阻塞的 ACID 表示原子性(atomicity),一致性(consistency),隔离性(isolation),和持久 ...
分类:
数据库 时间:
2017-04-18 13:05:12
阅读次数:
201
分为排它锁和共享锁,当一个事务获得排它锁后,其它事务不能进行读或写操作,当一个事务获得共享锁后,其它事务可以进行读操作但不能写。 排它锁也叫写锁或x锁,共享锁叫读锁或s锁。 按保护内容来分: dml锁,保护数据的完整和一致性,分tm锁(又称表级锁)和tx锁(又称行级锁或事务锁) ddl锁,保护数据对 ...
分类:
数据库 时间:
2017-04-15 10:01:04
阅读次数:
246
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op ...
分类:
数据库 时间:
2017-04-13 19:59:54
阅读次数:
242
Redis事务:可以一次执行多个命令,本质是一组命令的集合。一个事务中的,所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞。 常用命令:MULTI 开启事务 EXEC 提交事务、 DISCARD 放弃事务 WATCH 监控事务 UNWATCH 取消监控事务 case1:正常执行 ...
分类:
其他好文 时间:
2017-03-29 01:22:39
阅读次数:
227
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op ...
分类:
其他好文 时间:
2017-03-25 00:48:51
阅读次数:
146
1.1.1. 读写锁应用之三写锁降级 ReentrantReadWriteLock还具有写锁降级的特点,而这跟可重入性有一些关系。 (1)持有写锁时可以降级为读锁。 (2)持有读锁时不能升级为写锁。 ReentrantReadWriteLock和ReentrantLock相似的是都有一个特点,就是可 ...
分类:
编程语言 时间:
2017-03-24 23:32:43
阅读次数:
363
RWMutex:是基于Mutex实现的读写互斥锁,一个goroutine可以持有多个读锁或者一个写锁,同一时刻只能持有读锁或者写锁 数据结构设计: 按顺序这里应该介绍释放写锁的代码了,但是由于获取写锁中有很重要的几个逻辑变量,跟获取读锁时强依赖,所以在这里先说说获取读锁的逻辑 总结: 读写互斥锁的实 ...
分类:
其他好文 时间:
2017-03-21 13:06:42
阅读次数:
287
StampedLock是Java8引入的一种新的所机制,简单的理解,可以认为它是读写锁的一个改进版本,读写锁虽然分离了读和写的功能,使得读与读之间可以完全并发,但是读和写之间依然是冲突的,读锁会完全阻塞写锁,它使用的依然是悲观的锁策略.如果有大量的读线程,他也有可能引起写线程的饥饿 而Stamped ...
分类:
编程语言 时间:
2017-03-20 19:00:17
阅读次数:
245