码迷,mamicode.com
首页 >  
搜索关键字:加锁    ( 2232个结果
生产者/消费者模式(二)
我们知道,对于一个队列而言,最主要的两个操作是添加元素(Add)和获取/删除元素(Get),之前文章中实现了一个linux下通用的阻塞队列BlockQueue,通过代码可以看出,为了保证在多线程环境下安全正确的运行,BlockQueue定义中的几个关键函数都进行了加锁保护,而锁住的对象是整个队列.....
分类:其他好文   时间:2014-11-19 17:54:52    阅读次数:200
对多线程的锁的理解
package com.huowolf; /* * 有必要加锁的前提是:有多个线程对同一数据进行多行代码操作。 * 检查方法是,1.先找出多个线程执行了那些代码块。 * 2.这些代码中有没有共同(或共享)数据。 * 3.操作该共同数据的代码是否有多行。 * 如果以上三条都满足的话。则必须要加锁(也就是同步代码块或者同步函数)。 * * * 同步函数用的哪一个锁? * 函数需...
分类:编程语言   时间:2014-11-16 17:27:19    阅读次数:230
Java 高并发缓存与Guava Cache
今天我们介绍的是本地缓存缓存,我们这边采用java.util.concurrent.ConcurrentHashMap来保存,ConcurrentHashMap是一个线程安全的HashTable,并提供了一组和HashTable功能相同但是线程安全的方法,ConcurrentHashMap可以做到读取数据不加锁,提高了并发能力。我们先不考虑内存元素回收或者在保存数据会出现内存溢出的情况,我们用ConcurrentHashMap模拟本地缓存,当在高并发环境一下,会出现一些什么问题?...
分类:编程语言   时间:2014-11-15 17:15:05    阅读次数:258
客户端处理包方法
不同包客户端的处理方法对于那种事件类型的连接上了,连接失败了,断开连接了bool NGP::OnConnected(){ std::lock_guard lock(m_PktMutex);//加锁是因为runonce应该是另一个线程 m_queFunctions.push(std::bi...
分类:其他好文   时间:2014-11-15 06:35:12    阅读次数:224
兔子--synchronized
synchronized关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、D等)正在用这个方法,有的话要等正在使用synchronized方法的线程B(或者C、D)运行完这个方法后再运行此线程A,没有的话,直接运行。它包括两种用法:synchronized方法和synchronized块。 synchronized 方法 ...
分类:其他好文   时间:2014-11-14 14:20:38    阅读次数:197
高并发请求中的读写锁
在数据库中使用读写锁 数据库中使用读写锁,这样能更好地读取某一类统计数据,但一般读取不应该加锁,但修改操作却要慎重 事务的特性  1. 原子性(atomic),事务必须是原子工作单元;对于其数据修改,要么全都执行...
分类:其他好文   时间:2014-11-14 08:09:06    阅读次数:742
java给不同步的集合加上同步锁
给非同步的集合加锁:class MyCollections{//创建工具类,提供对外访问方法 public static list synList(List list){ return new MyList(list); } private Class...
分类:编程语言   时间:2014-11-09 22:01:23    阅读次数:180
多线程之Lock锁和读写锁ReadWriteLock
JDK1.5之后有提供了另一种加锁方式Lock锁。Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的Condition 对象。 锁是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问。一次只能有一个线程获得锁,对共享资源的所有访问都需要首先获得锁。不过,某些锁可能允许对共享资源并发访问,如ReadWriteLock 的读取锁。 synchronized 方法或语句的使用提供了对与每...
分类:编程语言   时间:2014-11-09 01:08:16    阅读次数:305
多线程之同步Synchronized
在java中synchronized是多个线程共享同一段代码的锁。 当有多个线程并发执行同一块代码块时,加锁可以让一段时间内只有一个线程在执行,保证了业务的原子操作。 例如下面: package andy.thread.traditional.test; /** * @author Zhang,Tianyou * @version 2014年11月8日 下午11:02:53 */ ...
分类:编程语言   时间:2014-11-08 23:37:15    阅读次数:302
设计模式学习第一天:23种设计模式(全)
C#常见的设计模式一、概要:模式分为三种,设计模式、体系结构模式与惯用法。其中惯用法是一种语言紧密相关的模式,例如,定界加锁模式其实是一种惯用法。在C#项目开发过程中,很多情况下您已经使用了某些模式,但或许您并不知道自己所使用的这种解决方案是一种已经被总结归纳的模式。工厂、策略、桥接、模板方法、代理...
分类:其他好文   时间:2014-11-06 23:31:38    阅读次数:781
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!