From 0dc30fcf3eb6b9a37b987a4dbe782605e3a639f0 Mon Sep 17 00:00:00 2001 From: Nathan Youngman Date: Sun, 14 Sep 2014 11:06:34 -0600 Subject: [PATCH] kqueue: done can be an unbuffered channel --- kqueue.go | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/kqueue.go b/kqueue.go index acae4c7..f3ee145 100644 --- a/kqueue.go +++ b/kqueue.go @@ -55,7 +55,7 @@ func NewWatcher() (*Watcher, error) { externalWatches: make(map[string]bool), Events: make(chan Event), Errors: make(chan error), - done: make(chan bool, 1), + done: make(chan bool), } go w.readEvents() @@ -250,14 +250,8 @@ func (w *Watcher) readEvents() { for { // See if there is a message on the "done" channel - var done bool select { - case done = <-w.done: - default: - } - - // If "done" message is received - if done { + case <-w.done: errno := syscall.Close(w.kq) if errno != nil { w.Errors <- os.NewSyscallError("close", errno) @@ -265,6 +259,7 @@ func (w *Watcher) readEvents() { close(w.Events) close(w.Errors) return + default: } // Get new events -- 2.50.1