ReentrantLock是JDK5加入的新类,它的用法和synchronized类似。比过它需要程序员手动添加加锁和解锁的代码。
比起synchronized的好处。它添加了两个方法:
l 提供了tryLock(),该方法调用的时候。如果锁被另一个对象持有,它会返回false。
l 还一个就是公平锁。在构造ReentrantLock的时候。它拥有一个人boolean类型的参数。该参数就...
分类:
编程语言 时间:
2015-03-04 22:49:25
阅读次数:
216
多线程中锁的概念python
好几个人问我给资源加锁是怎么回事,其实并不是给资源加锁, 而是用锁去锁定资源,你可以定义多个锁, 像下面的代码, 当你需要独占某一资源时,任何一个锁都可以锁这个资源...
分类:
编程语言 时间:
2015-03-03 18:42:17
阅读次数:
151
atomic:默认是有该属性的,这个属性是为了保证程序在多线程情况下,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题。 nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译...
分类:
移动开发 时间:
2015-03-02 17:05:14
阅读次数:
214
目录:线程间的通信示例等待唤醒机制等待唤醒机制的优化线程间通信经典问题:多生产者多消费者问题多生产多消费问题的解决JDK1.5之后的新加锁方式多生产多消费问题的新解决办法sleep和wait的区别停止线程的方式守护线程线程的其他知识点一、线程间的通信示例 返目录回多个线程在处理同一资源,任务却不同。...
分类:
编程语言 时间:
2015-03-02 01:00:03
阅读次数:
311
场景:
1. 需要统计某个线程的对象上创建的个数.
2. 当创建的堆空间需要根据线程需要创建和结束时销毁时.
3. 因为范围是线程只能看到自己的存储数据,所以不需要临界区或互斥量来维护自己的堆内存. 加入如果用全局std::map实现,那么必须在put和get时加锁,这是很损耗资源的.
4. 可以用在维护一个连接,比如socket,database连接....
分类:
编程语言 时间:
2015-03-01 00:25:18
阅读次数:
273
Java 的 synchronized当任务要执行被syschronized方法时候,此对象都被加锁,这时该对象上其他synchronized方法只有等到前一个方法调用完毕并释放了锁才能被调用class Demo{ synchronized void a(); syschronized...
分类:
编程语言 时间:
2015-02-28 14:15:24
阅读次数:
136
本文是.Net中的并行编程第六篇,今天就介绍一些我在实际项目中的一些常用优化策略。 一、避免线程之间共享数据 避免线程之间共享数据主要是因为锁的问题,无论什么粒度的锁,最好的线程之间同步方式就是不加锁,这个地方主要措施就是找出数据之间的哪个地方需要共享数据和不需要共享数据的地方,再设计上避免多线程之...
分类:
Web程序 时间:
2015-02-28 00:09:37
阅读次数:
147
上文讨论了互斥量和条件变量用于线程的同步,本文将讨论读写锁和自旋锁的使用,并给出了相应的代码和注意事项,相关代码也可在我的github上下载。
读写锁
对于互斥量要么是锁住状态要么是不加锁锁状态,而且一次只有一个线程可以对其加锁,而读写锁对线程的读数据加锁请求和写数据加锁请求进行了区分,从而在某些情况下,程序有更高的并发性。对于读写锁,一次只有一个线程可以占有写模式的读写锁,但是多个线程可...
分类:
编程语言 时间:
2015-02-25 17:08:45
阅读次数:
162
oracle032
锁的基本原理
1、Oracle锁类型
锁的作用:保护数据,没有锁就没有并发,锁是用来限制并发的
数据库反应慢不一定是数据负严重,也可能是锁的原因阻止了事务的进行:开两个客户端修改数据会明显发现第二个会很慢就是因为第一个用户锁住了行记录
latch锁:chain,链(server Pro 并发访问时就通过获取...
分类:
其他好文 时间:
2015-02-24 10:20:26
阅读次数:
271
QT SQLite 多数据库操作大全一.单数据库模型一般QT都是把打开一个缺省数据库连接,操作一个数据库连接,但是对Sqlite中频率修改容易加锁,因此有一种设计模式是把频率修改的表放在不同的数据库文件中,但这样要修改代码操作数据库部分
通常打开代码 http://developer.nokia.com/community/wiki/Creating_an_SQLite_database...
分类:
数据库 时间:
2015-02-22 18:31:57
阅读次数:
306