فهرست منبع

add CheckOnce

Denmaseno 8 سال پیش
والد
کامیت
2675166b4d
1فایلهای تغییر یافته به همراه28 افزوده شده و 0 حذف شده
  1. 28 0
      check-once.go

+ 28 - 0
check-once.go

@@ -0,0 +1,28 @@
+package util
+
+import "sync"
+
+// CheckOnce struct
+type CheckOnce struct {
+	mutex sync.Mutex
+	done  bool
+}
+
+// IsDone func
+func (c *CheckOnce) IsDone() bool {
+	c.mutex.Lock()
+	defer c.mutex.Unlock()
+
+	return c.done
+}
+
+// Done func
+func (c *CheckOnce) Done(f func()) {
+	c.mutex.Lock()
+	defer c.mutex.Unlock()
+
+	if !c.done {
+		f()
+		c.done = true
+	}
+}