Explorar el Código

add CheckOnce

Denmaseno hace 8 años
padre
commit
2675166b4d
Se han modificado 1 ficheros con 28 adiciones y 0 borrados
  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
+	}
+}