From 9291dc9f521fa7bc248a68285e8a901ef711bc67 Mon Sep 17 00:00:00 2001
From: capossele <angelocapossele@gmail.com>
Date: Fri, 26 Jul 2019 09:44:19 +0100
Subject: [PATCH] :bug: added RWMutex

---
 packages/events/event.go | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/packages/events/event.go b/packages/events/event.go
index d35788bc..ae8de77f 100644
--- a/packages/events/event.go
+++ b/packages/events/event.go
@@ -1,19 +1,28 @@
 package events
 
+import "sync"
+
 type Event struct {
 	triggerFunc func(handler interface{}, params ...interface{})
 	callbacks   map[uintptr]interface{}
+	mutex       sync.RWMutex
 }
 
 func (this *Event) Attach(closure *Closure) {
+	this.mutex.Lock()
+	defer this.mutex.Unlock()
 	this.callbacks[closure.Id] = closure.Fnc
 }
 
 func (this *Event) Detach(closure *Closure) {
+	this.mutex.Lock()
+	defer this.mutex.Unlock()
 	delete(this.callbacks, closure.Id)
 }
 
 func (this *Event) Trigger(params ...interface{}) {
+	this.mutex.RLock()
+	defer this.mutex.RUnlock()
 	for _, handler := range this.callbacks {
 		this.triggerFunc(handler, params...)
 	}
-- 
GitLab