]> go.fuhry.dev Git - fsnotify.git/commitdiff
kqueue: done can be an unbuffered channel
authorNathan Youngman <git@nathany.com>
Sun, 14 Sep 2014 17:06:34 +0000 (11:06 -0600)
committerNathan Youngman <git@nathany.com>
Wed, 24 Sep 2014 21:34:04 +0000 (15:34 -0600)
kqueue.go

index acae4c7bce9d901745002bf95ab2a6a08da6e580..f3ee14538d0cba7c7049c73d4f11d3d3329ba390 100644 (file)
--- 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