3 ms·
I thought Go had gc. Why would you ever need reference counts?
by api 11y ago
I thought Go had gc. Why would you ever need reference counts?
- voidlogic 11y agoNon-memory resources that exist within your application. Example: Perhaps once no instances of an object are in use, you want to remove that object from persistent storage such as a DB.
- api 11y agoDoes Go not have finalizers? These are mostly solved problems since the Smalltalk era. Haven't learned Go yet and from what I read I'd be better off with Rust or something that would stretch my brain more like Haskell. When I read about it I get the sense that we are reinventing stuff from the 90s. But hey, it's hip.
- catnaroek 11y agoSometimes you need to guarantee that resources are cleaned up in a timely fashion. Finalizers don't help here.
- hacknat 11y agoPiggy backing off @catnaroek, go does have finalizers too though.
- pcwalton 11y agoGo does have runtime.SetFinalizer: https://golang.org/pkg/runtime/#SetFinalizer https://golang.org/pkg/runtime/#SetFinalizer But beware of finalizer ordering issues.
- chrsm 11y agoExample: Recently built a small service that responds to requests and walks various files looking for data. The service can be asked to unload (close) the file, but it's hard to say whether it's in-use at the time without some kind of reference count to current requests using the file.
- nly 11y agoThat's kinda what dup() is for. Reference counting happens in the kernel.