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