Robust and Immediate Resource Reclamation with M3
Viktor Reusch, Nils Asmussen, Michael Roitzsch · 2024
Asynchronous programming is a very helpful programming methodology for systems with many threads and long-running I/O. However, care must be taken if systems, e.g., kernels, work with objects that can be dynamically created, used, and destroyed by asynchronous tasks. The typical approach keeps an object alive until all tasks are done with it. However, this can lead to long delays until resources can be reclaimed and performs useless work on already destroyed objects.