高效的读写锁-共享资源
来源:互联网 发布:路由器网络异常 编辑:程序博客网 时间:2024/06/06 19:51
字典式的并发锁
public abstract class ReaderWriterCache<TKey, TValue> { private readonly Dictionary<TKey, TValue> _cache; private readonly ReaderWriterLock _rwLock = new ReaderWriterLock(); protected ReaderWriterCache() : this(null) { } protected ReaderWriterCache(IEqualityComparer<TKey> comparer) { _cache = new Dictionary<TKey, TValue>(comparer); } protected Dictionary<TKey, TValue> Cache { get { return _cache; } } protected void Clear() { _rwLock.AcquireWriterLock(Timeout.Infinite); try { _cache.Clear(); } finally { _rwLock.ReleaseWriterLock(); } } protected TValue FetchOrCreateItem(TKey key, Func<TValue> creator) { _rwLock.AcquireReaderLock(Timeout.Infinite); try { TValue existingEntry; if (_cache.TryGetValue(key, out existingEntry)) { return existingEntry; } } finally { _rwLock.ReleaseReaderLock(); } TValue newEntry = creator(); _rwLock.AcquireWriterLock(Timeout.Infinite); try { TValue existingEntry; if (_cache.TryGetValue(key, out existingEntry)) { return existingEntry; } _cache[key] = newEntry; return newEntry; } finally { _rwLock.ReleaseWriterLock(); } } }
共享资源放到类的私有静态变量中
internal class GeneratorStoreTypeCache:ReaderWriterCache<string,Type> { //方法 GetDiscriptor 反正就是获取Type的描述信息 } internal static class TypeCache { private readonly static GeneratorStoreTypeCache generatorStoreTypeCache = new GeneratorStoreTypeCache(); public static GeneratorStoreTypeDiscriptor GetTypeDiscriptor(Type generatorStoreType) { return generatorStoreTypeCache.GetDiscriptor(generatorStoreType); } }
阅读全文
0 0
- 高效的读写锁-共享资源
- 多线程不同步读写共享资源
- 高效的Session读写
- java 的高效读写
- 高效的读写
- UcosII 共享资源的锁机制的处理
- 谢谢 共享资源的朋友
- 一款共享资源的软件
- 共享资源的公平性研究
- 线程共享资源的问题
- 我的共享资源
- 共享资源的简单示例
- 高效读写的队列:深度剖析ConcurrentLinkedQueue
- 从excel读写数据和高效读写数据想到的
- 共享资源
- 共享资源
- 共享资源
- 绞尽脑汁写的一个自认为非常简洁高效的读写锁
- OFBIZ 搭建环境创建数据库的脚本模板
- dubbo-admin java.langIllegalAccessError 系统内部错误
- 关于easyui的comobox的系列问题
- Java中的深拷贝(深复制)和浅拷贝(浅复制)
- javascript中访问对象的属性
- 高效的读写锁-共享资源
- Java如何获取MD5值
- 【Java】Java根据路径获取图片偶尔会得不到图片问题的解决方法
- 对java的告白
- Jmeter 性能调优
- http自动转https
- 数学——cf 735 D
- scala合并文件,删除具有相同字段的记录
- Java项目经验