自动内存管理的想法已经获得了新的编程语言的大力支持.我有兴趣是否存在自动管理其他资源(如文件,网络套接字等)的概念?
对于单线程应用程序,可用于代码块范围的资源模式(最后清理)存在于多种语言中.例如在C++中使用RAII,或在Common Lisp中使用-open -file(在新的受Lisp影响的语言中等效 - 在Dylan,C#,Python和Ruby中也可以将块传递给文件对象).
我不知道有什么更适合现代垃圾收集闪耀的多线程环境,而不是在C++中结合RAII和引用计数或auto_ptr,这并不总是一个微不足道的组合.
资源自动管理和自动内存管理之间的一个重要区别是,内存管理通常可以提供非确定性,并且只在流程需要时回收,而资源通常限制在操作系统级别,因此应尽快回收因为它不再使用.因此选择智能指针而不是垃圾收集作为管理实现.有一个中间级别的资源--GDI对象,临时文件句柄,线程 - 应用程序想要限制它使用的总量,但不关心将它们释放到其他进程 - 这些通常是合并的,这会让你有所帮助走向自动化管理.