当C++遇到IOS应用开发---LRUCache缓存(5)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-20 07:51 点击:

            return &(iter->second); 
        } 
        else{ 
            return NULL; 
        } 
    } 
    
    
    unsigned get_lru_list_size(){ return (unsigned)_lru_list->size(); } 
    unsigned get_hash_table_size() { return (unsigned)_hash_table->size(); } 
    virtual_time get_now() { return _now; } 
    
private: 
    virtual_time get_virtual_time() 
    { 
        return ++_now; 
    } 
    
    shared_ptr<lru_map<virtual_time, HashKey> >    _lru_list; 
    shared_ptr<lru_map<HashKey, HashValue> > _hash_table; 
    virtual_time _now; 
}; 
    
#endif 

 


      接下来看一下如果结合单例和rwlock来设计最终的缓存功能,如下:

[cpp] 
using namespace lru_cache; 
class DZCache: public Singlton<DZCache> 

    friend  class Singlton<DZCache>; 
private: 
    shared_ptr<CLRUCache> clu_cache; 
    rwlock *lock; 
    DZCache(){ 
        lock =(rwlock*) malloc(sizeof(rwlock)); 
        rwlock_init(lock); 
        clu_cache = shared_ptr<CLRUCache>(new CLRUCache()); 
        cout << "construct JobList" << endl; 
    } 
    
    DZCache * Instance() { 
        return s_instance.get(); 
    } 
 
public: 
    
    ~DZCache(){ 
        free(lock); 
    } 
    
    static DZCache& getInstance(){ 
        return *instance(); 
    } 
 
    void set(NSString* key, id value){ 
        //加锁 
        rwlock_wlock(lock); 

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Lexical or Preprocessor Issue 'xxx.h
  • ios学习笔记(二)xcode 4.3.2下实现基本交互
  • ios版本的helloworld
  • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
  • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
  • UITableView一些方法
  • IOS类似iphone通讯录TableView的完整demo【附源码】
  • [iPhone中级]iPhone团购信息客户端的开发 (二)
  • iphone(object-c)内存管理(1)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1