先看代码 方案一:Redis分布式锁 该方法完美的解决了超卖与select排它锁导致的并发低的问题,并且4个sql缩减成2个sql语句。极大提升性能 方案二:利用redis的原子性操作(incrBy方法、decrBy方法--返回操作之后的值) 利用redis的原子性操作 对于Redis而言,命令的原 ...
分类:
其他好文 时间:
2018-01-23 15:50:55
阅读次数:
266
SQLite是为中小规模的应用程序设计的一个嵌入式的数据库 局限性一: 并发。SQLite的锁机制是粗粒度的,它允许多个读,但是一次只允许一个写。 写锁会在写期间排他地锁定数据库,其他人在此期间不能访问数据库。 SQLite已经采取措施以最小化排它锁所占用的时间。 通常来讲,SQLite中的锁只保持 ...
分类:
数据库 时间:
2018-01-18 11:52:19
阅读次数:
214
Locking Reads 在同一个事务中,如果你先查询数据,随后对相关数据进行插入或修改,那么在标准的SLELECT中不会给出足够的保护。在你查询期间另一个事务可以更新或者删除相同的行。InnoDB提供两种类型的加锁读: SELECT ... LOCK IN SHARE MODE 给读到的每一行都 ...
分类:
数据库 时间:
2018-01-10 20:27:02
阅读次数:
192
一、使用线程的理由 1、可以使用线程将代码同其他代码隔离,提高应用程序的可靠性。 2、可以使用线程来简化编码。 3、可以使用线程来实现并发执行。 二、基本知识 1、进程与线程:进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源。 2、前台线程和 ...
分类:
编程语言 时间:
2018-01-09 16:48:55
阅读次数:
258
上一篇文章中主要讲解了Linux环境下多线程的基本概念和特性,本文将说明Linux环境下多线程的同步方式。 在《UNIX环境高级编程》第二版的“第11章 线程”中,提到了类UNIX系统中的三种基本的同步机制:互斥、读写锁、条件变量。下面分别针对这三种机制进行说明: 一、线程互斥 互斥意味着具有“排它 ...
分类:
编程语言 时间:
2017-12-08 20:49:33
阅读次数:
197
本文目录: 线程的简单使用 并发和异步的区别 并发控制 - 锁 线程的信号机制 线程池中的线程 案例:支持并发的异步日志组件 线程的简单使用 常见的并发和异步大多是基于线程来实现的,所以本文先讲线程的简单使用方法。 使用线程,我们需要引用System.Threading命名空间。创建一个线程最简单的 ...
分类:
编程语言 时间:
2017-12-03 21:44:20
阅读次数:
163
数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并 发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事 ...
分类:
其他好文 时间:
2017-11-17 19:56:05
阅读次数:
137
概述: 在一些程序中存在读者写者问题,也就是说,对某些资源的访问会 存在两种可能的情况,一种是访问必须是排它行的,就是独占的意思,这称作写操作; 另一种情况就是访问方式可以是共享的,就是说可以有多个线程同时去访问某个资源,这种就称作读操作。这个问题模型是从对文件的读写操作中引申出来的。 读写锁比起m ...
分类:
其他好文 时间:
2017-11-13 00:23:31
阅读次数:
207
数据库的 基本分为 共享锁和排它锁 排它锁顾名思义,不能和其他任何所共存。 以SqlServer中某一行数据为例, 特殊的,WithNoLock 这个是不给数据加上任何锁,所以根本和锁没关系 再说update,update的过程是给这条数据加上排它锁,所以当另外事物过来要求修改这条数据的时候,会由于 ...
分类:
数据库 时间:
2017-11-06 21:18:35
阅读次数:
183
lock基本思路: volitile + CAS +Queue(存放线程) 实现了: 1 可见性(volitile 和 happenedBefor原则共同实现) 与 2 原子性(CAS ,CPU 指令实现) 共享锁和排它锁(ReentrantReadWriteLock): 共享锁与排他锁 共用一个线 ...
分类:
其他好文 时间:
2017-10-17 19:03:23
阅读次数:
135