无论如何实施资源获取是在计划初始化?RAII在计划?
我知道RAII在GC-ed语言中工作不正常(因为我们不知道该对象是否被销毁)。然而,Scheme具有诸如continuation,dynamic-wind和closure这样的好东西 - 有没有一种方法可以使用这种结合来实现RAII?
如果不是,schematics如何设计他们的代码不使用RAII?
[一个常见的例子我碰上如下:
我有一个3D网格,我有一个顶点缓存对象atached到它, 当不再使用的网格,我希望VBO腾出。]
谢谢!
嗨,anon。我想知道我的答案是否令你满意,或者你是否在寻找别的东西。 – 2010-01-21 21:01:46
我认为你的回答和它的计划一样好。 我们在某个层面上,我们必须知道模型何时“死亡”,并放弃它的vbo。然而,在RAII + GC中,我不需要事先知道这一点,我们可以说“模型,我不知道你什么时候会死,但是我知道当你这样做时,你会放弃VBO ”。 因为方案是gc-ed,我们不能做得太晚;我最初希望得到的是一些聪明的宏马克,它自动地交错了一些类型的ref-counting,这将提供这种类型的RAII + Refcounting。 – anon 2010-01-22 02:34:45
为了进一步补充,请考虑以下情况:我们创建一个模型,我们不知道它何时被删除,但我们知道它已被渲染很多;所以我们给它一个VBO;通过它很多; ...当没有人使用它时,它释放了VBO。代码中没有一个地方我知道“我现在可以释放模型”。 – anon 2010-01-22 02:35:28