在某些情况下,返回 nanoarrow_array_stream 的 R 函数可能要求某个其他对象的生命周期长于数组流。如果需要确定性地释放该对象(例如,关闭打开的文件),您可以注册一个函数,使其在流的释放回调从 R 线程调用后运行。请注意,如果流的释放回调从非 R 线程调用,则此终结器将不会运行。在这种情况下,终结器及其环境链将在 nanoarrow:::preserved_empty() 运行时被垃圾回收。
示例
stream <- array_stream_set_finalizer(
basic_array_stream(list(1:5)),
function() message("All done!")
)
stream$release()
#> All done!