There's also Quiescent-State-Based Reclamation, which emerged in the context of RCU. Tom Hart’s 2005 thesis[1] provides a pretty comprehensive overview of these memory reclamation strategies.
Another approach to consider would be a sharded design a la Seastar[2], or some other approach leveraging the single writer principle (i.e., peer-to-peer communication based on SPSC queues) to decrease synchronization overhead. [1] http://www.cs.toronto.edu/~tomhart/papers/tomhart_thesis.pdf [2] https://github.com/scylladb/seastar On Sun, Jan 28, 2018 at 5:45 PM Chris Vest <[email protected]> wrote: > Hi, > > I know of two ways to do manual memory management in multi-threading code: > hazard pointers and epochs. > > Which one is generally considered the higher performance option? > Are there any other options that should be considered as well? > Are there any spicy trade-offs one should make sure to factor into the > decision of which one to go with? > > Thanks, > Chris. > > -- > You received this message because you are subscribed to the Google Groups > "mechanical-sympathy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
