瀏覽代碼

use a timer instead of 'After' to avoid leaking resources

Jeromy 8 年之前
父節點
當前提交
b36b43f5a2
共有 1 個文件被更改,包括 6 次插入1 次删除
  1. 6 1
      stream.go

+ 6 - 1
stream.go

@@ -118,12 +118,17 @@ START:
 
 WAIT:
 	var timeout <-chan time.Time
+	var timer *time.Timer
 	if !s.readDeadline.IsZero() {
 		delay := s.readDeadline.Sub(time.Now())
-		timeout = time.After(delay)
+		timer = time.NewTimer(delay)
+		timeout = timer.C
 	}
 	select {
 	case <-s.recvNotifyCh:
+		if timer != nil {
+			timer.Stop()
+		}
 		goto START
 	case <-timeout:
 		return 0, ErrTimeout