無論如何實施資源獲取是在計劃初始化?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