The Programming Language Tips[6]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 chelsea 的 blog

         }

     }

效果

不必为不需要的功能付出额外的代价


资源管理

问题

有时需要精确的控制资源分配和释放的时机,保证资源的异常安全,避免资源泄漏,导致死锁,文件丢失,数据库连接过多等

我见过的解决方法

在缺乏真正的局部对象和析构函数的语言中,try/catch/finally充斥在代码中

使用中间件可帮助解决部分资源管理,如数据库连接等

可能会出现基于aop的资源管理框架

我推荐的解决方法

在c++中,自动化的资源管理是与生俱来的,即b.s.提出的“资源管理即初始化”(raii)

在c#中,可使用using+idispose取得近似raii的效果

在java中,我不知道,讨论一下

[c++,raii,仅仅示例,操作文件应首选std::fstream等]

class file

{

public:

     explicit file(string path){

         pf = fopen(path.c_str(), "rwb");

     }

     ~file(){

         fclose(pf);

     } 

     operator file* (){

         return pf;

     }

private:

     file* pf;

};

[c++,raii的客户代码,仅仅示例,操作文件应首选std::fstream等]

void test()

{

本文关键:The Programming Language Tips
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top