diff --git a/cleanup_guard/cleanup_guard.go b/cleanup_guard/cleanup_guard.go new file mode 100644 index 0000000..50fa8ec --- /dev/null +++ b/cleanup_guard/cleanup_guard.go @@ -0,0 +1,24 @@ +package cleanupguard + +import "sync" + +type CleanupGuard struct { + enable bool + fn func() + mutex sync.Mutex +} + +// 新建清理 +func NewCleanupGuard(fn func()) CleanupGuard { + return CleanupGuard{fn: fn, enable: true} +} + +func (g *CleanupGuard) Enable() { + g.mutex.Lock() + defer g.mutex.Unlock() + g.enable = true +} + +func (g *CleanupGuard) Run() { + g.fn() +}