MySQL中的锁概念
Mysql中不同的存储引擎支持不同的锁机制。比如MyISAM和MEMORY存储引擎采用的表级锁,BDB采用的是页面锁,也支持表级锁,InnoDB存储引擎既支持行级锁,也支持表级锁,默认情况下采用行级锁。
Mysql3中锁特性如下:
表级锁:开销小,加锁块;不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发...
分类:
数据库 时间:
2016-04-11 12:33:50
阅读次数:
310
1. 多线程访问共享资源没有加锁 错误提示:Segmentation fault! 解决办法: 多线程读不需要加锁 多线程同时读写则需要加锁 加锁的方法有互斥量、信号量、读写锁、记录锁、互斥量和条件变量结合提供的事件通知机制。 C++11里则有,lock_guard,unique_lock.两者都是 ...
分类:
其他好文 时间:
2016-04-08 11:45:23
阅读次数:
145
之前只知道在声明属性的时候要用nonatomic与atomic这两个关键字,但是具体的区别与作用还不是很理解,最近被问到,就做一下功课总结一下!希望对不是很理解的童鞋也有帮助!! 加了atomic的例子: 可以看出来,用atomic会在多线程的设值取值时加锁,中间的执行层是处于被保护的一种状态,at ...
分类:
其他好文 时间:
2016-04-06 18:27:35
阅读次数:
141
乐观锁(Optimistic Locking): 乐观锁意思是不锁定表的情况下,利用业务的控制来解决并发问题,这样即保证数据的并发可读性又保证保存数据的排他性,保 证性能的同时解决了并发带来的脏数据问题。 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依 靠数据库的锁机制实现 ...
分类:
其他好文 时间:
2016-04-06 15:20:37
阅读次数:
184
Qt线程类 Qt 包含下面一些线程相关的类:QThread 提供了开始一个新线程的方法QThreadStorage 提供逐线程数据存储QMutex 提供相互排斥的锁,或互斥量QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁QReadWriterLock 提供了一个可以同时读 ...
分类:
编程语言 时间:
2016-04-04 22:49:28
阅读次数:
275
提到JAVA加锁,我们通常会想到synchronized关键字或者是Java Concurrent Util(后面简称JCU)包下面的Lock,今天就来扒一扒Lock是如何实现的,比如我们可以先提出一些问题:当我们通实例化一个ReentrantLock并且调用它的lock或unlock的时候,这其中 ...
分类:
其他好文 时间:
2016-04-04 00:07:55
阅读次数:
448
前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎 ...
分类:
数据库 时间:
2016-04-03 13:06:34
阅读次数:
264
这个对象池相当小巧,支持加锁以方便支持线程安全,当然了,如果在单线程中使用,可以指定一个伪锁。 这个对象池并不能解决内存碎片问题,只是用空间换时间。这个代码相当简短,一看就明白,所以不写用例了。还有这个锁的代码就不贴了,因为锁的样式各有不同,还有避免跑题,避免喧宾夺主。 上代码: 不够150字不允许 ...
分类:
其他好文 时间:
2016-04-02 13:25:21
阅读次数:
140
协程: 1、单线程运行,无法实现多线程。 2、修改数据时不需要加锁(单线程运行),子程序切换是线程内部的切换,耗时少。 3、一个cpu可支持上万协程,适合高并发处理。 4、无法利用多核资源,因为协程只有一个线程。 使用yield实现协程: ...
分类:
编程语言 时间:
2016-03-31 16:39:24
阅读次数:
237
1. 什么是互斥量
互斥量从本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁以后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所以在该互斥锁上的阻塞线程都会变成可进行状态,第一个变成运行状态的线程可以对互斥量加锁,其他线程在次被阻塞,等待下次运行状态。
pthr...
分类:
编程语言 时间:
2016-03-31 11:05:35
阅读次数:
259