From: Nathan Youngman Date: Sun, 14 Sep 2014 17:06:34 +0000 (-0600) Subject: kqueue: done can be an unbuffered channel X-Git-Tag: v1.7.2~262 X-Git-Url: https://go.fuhry.dev/?a=commitdiff_plain;h=0dc30fcf3eb6b9a37b987a4dbe782605e3a639f0;p=fsnotify.git kqueue: done can be an unbuffered channel --- 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